class NicoSearch::Client

Constants

ENDPOINT
SERVICES

Public Class Methods

Private Class Methods

check_available_service(service) click to toggle source
# File lib/nico_search/client.rb, line 64
def check_available_service(service)
  unless SERVICES.include?(service)
    raise UnavailableServiceError
  end
end
filter_string(filters) click to toggle source
# File lib/nico_search/client.rb, line 48
def filter_string(filters)
  filters.map{|k,v|
    if v.is_a?(Hash)
      v.map{|kk,vv|
        "[#{k}][#{kk}]=#{CGI::escape(vv.to_s)}"
      }
    elsif v.is_a?(Array)
      v.map{|vv|
        "[#{k}][]=#{CGI::escape(vv.to_s)}"
      }
    else
      "[#{k}][]=#{CGI::escape(v.to_s)}"
    end
  }.flatten.map{|s| 'filters' + s}.join('&')
end
get_json(url, params) click to toggle source
# File lib/nico_search/client.rb, line 22
def get_json(url, params)
  uri = URI.parse(url)
  resp = Net::HTTP.start(uri.host, uri.port) do |http|
    http.open_timeout = 5
    http.read_timeout = 10
    http.get(uri.request_uri + query_string(params))
  end

  resp.value # raise if status code is not 2xx

  json = resp.body
  JSON.parse(json)
end
query_string(params) click to toggle source
# File lib/nico_search/client.rb, line 36
def query_string(params)
  return '' if params.empty?

  '?' + params.map{|k,v|
    if k == :filters
      filter_string(v)
    else
      "#{k}=#{CGI::escape([v].flatten.join(','))}"
    end
  }.join('&')
end