class SearchDataAPISearch
Abstract HTTP client for api.searchdata.io
Constants
- LOCATIONS_API
- MAIN_API
- MAIN_API_PATH
Attributes
params[RW]
Public Class Methods
api_key=(api_key)
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 97 def self.api_key=(api_key) $searchdata_api_key = api_key end
new(params, engine = nil)
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 30 def initialize(params, engine = nil) @params = params @params[:engine] ||= engine raise "`engine` must be defined in params or a second argument" if @params[:engine].nil? end
searchdata_api_key=(api_key)
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 93 def self.searchdata_api_key=(api_key) self.api_key = api_key end
Public Instance Methods
api_key()
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 101 def api_key @params[:api_key] || @params[:searchdata_api_key] || $searchdata_api_key end
check_params(keys = [])
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 36 def check_params(keys = []) return if @params.keys == [:engine] raise "keys must be a list of String or Symbol" unless keys.instance_of?(Array) missing = [] keys.each do |key| case key.class.to_s when "String" missing << key.to_s if @params[key].nil? && @params[key.to_sym].nil? when "Symbol" missing << key.to_s if @params[key].nil? && @params[key.to_s].nil? else raise "keys must contains Symbol or String" end end raise "missing required keys in params.\n #{missing.join(",")}" unless missing.empty? end
construct_url(api, path)
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 85 def construct_url(api, path) @params[:api_key] = $searchdata_api_key unless $searchdata_api_key.nil? @params.delete_if { |_, value| value.nil? } URI::HTTPS.build(host: api, path: path, query: URI.encode_www_form(@params)) end
get_hash()
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 65 def get_hash JSON.parse(get_json) end
get_json()
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 61 def get_json get_results(MAIN_API, MAIN_API_PATH) end
get_location()
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 55 def get_location @params.delete(:engine) @params.delete(:api_key) JSON.parse(get_results(LOCATIONS_API, "")) end
get_results(api, path)
click to toggle source
# File lib/searchdata_sdk/searchdata_api_search.rb, line 69 def get_results(api, path) url = construct_url(api, path) URI(url).open(read_timeout: 600).read rescue OpenURI::HTTPError => e error = JSON.parse(e.io.read)["error"] if error puts "server returns error from url : #{url}" raise error else puts "fail: fetch url: #{url}" end rescue StandardError => e puts "fail: fetch url: #{url}" raise e end