class JishoAPI::Client

Constants

URI

Attributes

response[RW]

Public Class Methods

new() click to toggle source
# File lib/jisho_api/client.rb, line 11
def initialize; end

Public Instance Methods

make_request(params: {}) click to toggle source
# File lib/jisho_api/client.rb, line 13
def make_request(params: {})
  params.merge!(keyword: query) unless params.key?(:keyword)
  params.merge!(page: page) unless params.key?(:page)

  invalidate_cached_response!

  self.response = connection.get do |req|
    req.params = params
  end

  handle_response
end

Private Instance Methods

api_data() click to toggle source
# File lib/jisho_api/client.rb, line 48
def api_data
  parsed_response[:data]
end
api_status() click to toggle source
# File lib/jisho_api/client.rb, line 44
def api_status
  parsed_response[:meta][:status]
end
connection() click to toggle source
# File lib/jisho_api/client.rb, line 28
def connection
  @connection ||= Faraday.new(
    url: URI,
    headers: { 
      'Content-Type' => 'application/json',
      'User-Agent' => "gem jisho_api #{::JishoAPI::VERSION}"
    }
  )
end
handle_response() click to toggle source
# File lib/jisho_api/client.rb, line 38
def handle_response
  return api_data if response.status == 200 && api_status == 200

  raise APIError, "#{response.status} response from API"
end
invalidate_cached_response!() click to toggle source
# File lib/jisho_api/client.rb, line 56
def invalidate_cached_response!
  self.response = nil
  @parsed_response = nil
end
parsed_response() click to toggle source
# File lib/jisho_api/client.rb, line 52
def parsed_response
  @parsed_response ||= JSON.parse(response.body).with_indifferent_access
end