class DuckDuckGoApi::Client
Constants
- BASE_URL
Public Class Methods
query(options={})
click to toggle source
# File lib/duck_duck_go_api.rb, line 10 def query(options={}) api_call '', options end
Private Class Methods
api_call(method_name, options, verb=:get)
click to toggle source
# File lib/duck_duck_go_api.rb, line 21 def api_call(method_name, options, verb=:get) response = connection(method_name, options, verb) parse_response response end
api_url()
click to toggle source
Private API Call Method ##############
# File lib/duck_duck_go_api.rb, line 17 def api_url BASE_URL + '/' end
connection(method_name, options, verb)
click to toggle source
# File lib/duck_duck_go_api.rb, line 35 def connection(method_name, options, verb) conn = Faraday.new(:url => api_url) do |faraday| faraday.request :url_encoded faraday.adapter Faraday.default_adapter end response = conn.get(method_name + "?" + to_query_params(options)) end
parse_response(response)
click to toggle source
# File lib/duck_duck_go_api.rb, line 26 def parse_response(response) raise_errors response if response.body == " " {} else JSON.parse response.body end end
raise_errors(response)
click to toggle source
# File lib/duck_duck_go_api.rb, line 49 def raise_errors(response) message = "(#{response.status})" case response.status.to_i when 400 raise BadRequest, message when 401 raise Unauthorized, message when 403 raise General, message when 404 raise NotFound, message when 500 raise InternalError, "An internal error is thrown." when 502..503 raise Unavailable, message end end
to_query_params(options)
click to toggle source
# File lib/duck_duck_go_api.rb, line 45 def to_query_params(options) options.collect { |key, value| "#{key}=#{value}" }.join('&') end