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 =
'https://content.neatnerds.be/v1/'
Instance Method Summary collapse
- #available?(pack_name) ⇒ Boolean
- #catalog(tier:) ⇒ Object
- #download(pack_name, version:) ⇒ Object
- #download_signature(pack_name, version:) ⇒ Object
-
#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.
17 18 19 20 21 22 23 |
# File 'lib/rosett_ai/content/content_client.rb', line 17 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
52 53 54 55 56 57 |
# File 'lib/rosett_ai/content/content_client.rb', line 52 def available?(pack_name) response = @connection.head("packs/#{pack_name}") response.success? rescue Faraday::ConnectionFailed, Faraday::TimeoutError false end |
#catalog(tier:) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/rosett_ai/content/content_client.rb', line 25 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:) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/rosett_ai/content/content_client.rb', line 34 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:) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/rosett_ai/content/content_client.rb', line 43 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 |