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



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



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



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