class ResasKit::Client
Client
for the RESAS API
Constants
- API_ENDPOINT
- API_VERSION
- METHOD_PREFIX
- USER_AGENT
Attributes
api_key[RW]
api_version[RW]
Public Class Methods
new(options = {})
click to toggle source
Initialize a new Client
object with given options
@param options [Hash] Initialize options @option options [String] :api_key RESAS API key @option options [String] :api_version RESAS API version
# File lib/resas_kit/client.rb, line 24 def initialize(options = {}) @api_key = ENV['RESAS_API_KEY'] @api_version = ENV['RESAS_API_VERSION'] options.each do |key, value| instance_variable_set(:"@#{key}", value) end end
Public Instance Methods
get(path, params = {})
click to toggle source
Make a HTTP GET request
@param path [String] Path for request @param params [Hash] Request parameters @return [ResasKit::Response] Response
from API server
# File lib/resas_kit/client.rb, line 38 def get(path, params = {}) request(:get, path, params) end
Private Instance Methods
connection()
click to toggle source
# File lib/resas_kit/client.rb, line 52 def connection Faraday.new(url: API_ENDPOINT, headers: request_headers) do |faraday| faraday.request(:url_encoded) faraday.response(:json, content_type: /application\/json/) faraday.response(:error) faraday.adapter(Faraday.default_adapter) end end
method_missing(method, params = {})
click to toggle source
Calls superclass method
# File lib/resas_kit/client.rb, line 73 def method_missing(method, params = {}) if respond_to?(method) path = method.to_s .sub(/\A#{METHOD_PREFIX}/, '') .gsub(/__/, '/') .gsub(/_(.)/) { Regexp.last_match(1).camelize } get(path, params) else super end end
request(method, path, params = {})
click to toggle source
# File lib/resas_kit/client.rb, line 44 def request(method, path, params = {}) params.camelize_keys! faraday_response = connection.send(method, request_path(path), params) ResasKit::Response.new(faraday_response) rescue Faraday::ConnectionFailed => e raise ResasKit::Error, "#{ResasKit::ConnectionError.name.demodulize} - #{e.message}" end
request_api_version()
click to toggle source
# File lib/resas_kit/client.rb, line 69 def request_api_version @api_version || API_VERSION end
request_headers()
click to toggle source
# File lib/resas_kit/client.rb, line 61 def request_headers { 'User-Agent' => USER_AGENT, 'X-API-KEY' => @api_key } end
request_path(path)
click to toggle source
# File lib/resas_kit/client.rb, line 65 def request_path(path) "/api/#{request_api_version}/#{URI.escape(path)}" end
respond_to_missing?(method, include_private = false)
click to toggle source
Calls superclass method
# File lib/resas_kit/client.rb, line 85 def respond_to_missing?(method, include_private = false) method.to_s.start_with?(METHOD_PREFIX) || super end