class ResasKit::Client

Client for the RESAS API

@see opendata.resas-portal.go.jp

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