Class: FacelessReels::Client
- Inherits:
-
Object
- Object
- FacelessReels::Client
- Defined in:
- lib/faceless_reels/client.rb
Constant Summary collapse
- SHOWCASE_ID_PATTERN =
/\A[a-z0-9]+(?:-[a-z0-9]+)*\z/.freeze
Instance Method Summary collapse
- #available? ⇒ Boolean
-
#initialize(base_url: HOMEPAGE, http_get: nil) ⇒ Client
constructor
A new instance of Client.
- #ping ⇒ Object
- #showcase_video_url(showcase_id) ⇒ Object
Constructor Details
#initialize(base_url: HOMEPAGE, http_get: nil) ⇒ Client
Returns a new instance of Client.
9 10 11 12 |
# File 'lib/faceless_reels/client.rb', line 9 def initialize(base_url: HOMEPAGE, http_get: nil) @base_url = normalize_base_url(base_url) @http_get = http_get || lambda { |uri| Net::HTTP.get_response(uri) } end |
Instance Method Details
#available? ⇒ Boolean
23 24 25 26 27 |
# File 'lib/faceless_reels/client.rb', line 23 def available? ping.fetch("message", nil) == "pong" rescue Error, SystemCallError, Timeout::Error false end |
#ping ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/faceless_reels/client.rb', line 14 def ping response = @http_get.call(URI("#{@base_url}/api/ping")) raise HTTPError, response.code unless success?(response) JSON.parse(response.body) rescue JSON::ParserError => error raise Error, "Faceless Reels returned invalid JSON: #{error.}" end |
#showcase_video_url(showcase_id) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/faceless_reels/client.rb', line 29 def showcase_video_url(showcase_id) id = showcase_id.to_s unless SHOWCASE_ID_PATTERN.match?(id) raise ArgumentError, "Invalid showcase ID" end "#{@base_url}/api/public/showcase-videos/#{id}" end |