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