Module: WebPurify::Request

Defined in:
lib/web_purify/request.rb

Overview

WebPurify::Request

WebPurify::Request handles the HTTP/HTTPS queries to the API endpoints, converting returned JSON into a usable object.

Defined Under Namespace

Classes: RequestError

Constant Summary collapse

WRAPPER =
:rsp

Class Method Summary collapse

Class Method Details

.get(uri, scheme) ⇒ String

Handles making the query according to http or https scheme

Parameters:

  • uri (String)

    The uri to be queried

  • scheme (String)

    The scheme (http, https)

Returns:

  • (String)

    The JSON request response



68
69
70
71
# File 'lib/web_purify/request.rb', line 68

def self.get(uri, scheme)
  req = (scheme=='https') ? Net::HTTPS : Net::HTTP
  req.get uri
end

.query(request_base, query_base, params) ⇒ Hash

Executes a query to the API endpoint

Parameters:

  • request_base (Hash)

    The base parameters for the request (comes from WebPurify::Client initialize())

  • query_base (Hash)

    The base parameters for the query (api_key, format)

  • params (Hash)

    The unique query parameters

Returns:

  • (Hash)

    A hash parsed from the JSON response



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/web_purify/request.rb', line 45

def self.query(request_base, query_base, params)
  q = query_base.merge(params)
  uri_builder = (request_base[:scheme]=='https') ? URI::HTTPS : URI::HTTP
  uri = uri_builder.build(
    :host  => request_base[:host],
    :path  => request_base[:path], 
    :query => WebPurify::Request.to_query(q)
  )
  res = JSON.parse(WebPurify::Request.get(uri, request_base[:scheme]), :symbolize_names => true)[WRAPPER]
  if res[:err]
    err_attrs = res[:err][:@attributes]
    raise RequestError.new(err_attrs[:code], err_attrs[:msg])
  else
    res
  end
end

.to_query(hash) ⇒ String

Converts a hash of key/values into a url-ready query string

Parameters:

  • hash (Hash)

    The hash to be converted

Returns:

  • (String)

    The formatted query string



34
35
36
# File 'lib/web_purify/request.rb', line 34

def self.to_query(hash)
  return URI.encode(hash.map{|k,v| "#{k}=#{v}"}.join("&"))
end