Class: RosettAi::Content::ContentClient
- Inherits:
-
Object
- Object
- RosettAi::Content::ContentClient
- Defined in:
- lib/rosett_ai/content/content_client.rb
Overview
Faraday-based HTTP client for the NeatNerds content server.
License key is sent as Bearer token. All requests use HTTPS. Gracefully handles offline scenarios.
Constant Summary collapse
- DEFAULT_BASE_URL =
Returns Default base URL for API requests.
'https://content.neatnerds.be/v1/'
Instance Method Summary collapse
- #available?(pack_name) ⇒ Boolean
-
#catalog(tier:) ⇒ Hash
Retrieve the content catalog from the remote source.
-
#download(pack_name, version:) ⇒ String
Download a content pack from the remote source.
-
#download_signature(pack_name, version:) ⇒ String
Download the cryptographic signature for verification.
-
#initialize(license_key:, base_url: DEFAULT_BASE_URL) ⇒ ContentClient
constructor
A new instance of ContentClient.
Constructor Details
#initialize(license_key:, base_url: DEFAULT_BASE_URL) ⇒ ContentClient
Returns a new instance of ContentClient.
18 19 20 21 22 23 24 |
# File 'lib/rosett_ai/content/content_client.rb', line 18 def initialize(license_key:, base_url: DEFAULT_BASE_URL) @license_key = license_key @connection = Faraday.new(url: base_url) do |conn| conn.request :authorization, 'Bearer', license_key conn.adapter Faraday.default_adapter end end |
Instance Method Details
#available?(pack_name) ⇒ Boolean
67 68 69 70 71 72 |
# File 'lib/rosett_ai/content/content_client.rb', line 67 def available?(pack_name) response = @connection.head("packs/#{pack_name}") response.success? rescue Faraday::ConnectionFailed, Faraday::TimeoutError false end |
#catalog(tier:) ⇒ Hash
Retrieve the content catalog from the remote source.
30 31 32 33 34 35 36 37 |
# File 'lib/rosett_ai/content/content_client.rb', line 30 def catalog(tier:) response = @connection.get('packs', tier: tier) raise RosettAi::ContentError, "Server error: #{response.status}" unless response.success? YAML.safe_load(response.body, permitted_classes: []) rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e raise RosettAi::ContentError, "Cannot reach content server: #{e.}" end |
#download(pack_name, version:) ⇒ String
Download a content pack from the remote source.
44 45 46 47 48 49 50 51 |
# File 'lib/rosett_ai/content/content_client.rb', line 44 def download(pack_name, version:) response = @connection.get("packs/#{pack_name}/#{version}/download") raise RosettAi::ContentError, "Download failed: #{response.status}" unless response.success? response.body rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e raise RosettAi::ContentError, "Cannot reach content server: #{e.}" end |
#download_signature(pack_name, version:) ⇒ String
Download the cryptographic signature for verification.
58 59 60 61 62 63 64 65 |
# File 'lib/rosett_ai/content/content_client.rb', line 58 def download_signature(pack_name, version:) response = @connection.get("packs/#{pack_name}/#{version}/signature") raise RosettAi::ContentError, "Signature download failed: #{response.status}" unless response.success? response.body rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e raise RosettAi::ContentError, "Cannot reach content server: #{e.}" end |