class Jahuty::Client

Executes requests against Jahuty's API and returns resources.

Public Class Methods

new(api_key:, cache: nil, expires_in: nil, prefer_latest: false) click to toggle source
# File lib/jahuty/client.rb, line 8
def initialize(api_key:, cache: nil, expires_in: nil, prefer_latest: false)
  @api_key = api_key
  @cache = Cache::Facade.new(cache || ::MiniCache::Store.new)
  @expires_in = expires_in
  @services = {}
  @prefer_latest = prefer_latest
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source

Allows services to be accessed as properties (e.g., jahuty.snippets).

Calls superclass method
# File lib/jahuty/client.rb, line 17
def method_missing(name, *args, &block)
  if args.empty? && name == :snippets
    unless @services.key?(name)
      @services[name] = Service::Snippet.new(
        client: self, cache: @cache, expires_in: @expires_in, prefer_latest: @prefer_latest
      )
    end
    @services[name]
  else
    super
  end
end
request(action) click to toggle source
# File lib/jahuty/client.rb, line 30
def request(action)
  @requests ||= Request::Factory.new

  request = @requests.call(action)

  @client ||= Api::Client.new(api_key: @api_key)

  response = @client.send(request)

  @responses ||= Response::Handler.new

  result = @responses.call(action, response)

  raise Exception::Error.new(result), 'API problem' if result.is_a?(Resource::Problem)

  result
end
respond_to_missing?(name, include_private = false) click to toggle source
Calls superclass method
# File lib/jahuty/client.rb, line 48
def respond_to_missing?(name, include_private = false)
  name == :snippets || super
end