class JsonRequester

Attributes

conn[R]
host[R]

Public Class Methods

new(host, multipart: false) click to toggle source
# File lib/json_requester.rb, line 7
def initialize(host, multipart: false)
  @host = host
  @multipart = multipart
end

Public Instance Methods

form_send(http_method, path, params={}, headers={}) click to toggle source
# File lib/json_requester.rb, line 45
def form_send(http_method, path, params={}, headers={})
  conn = init_conn
  res = conn.send(http_method) do |req|
    req.url path
    req.headers = headers if object_present?(headers)
    req.headers['Content-Type'] = 'application/x-www-form-urlencoded ;charset=utf-8'
    req.body = URI.encode_www_form(params) if object_present?(params)
  end
  process_response(res)
rescue => e
  error_response(e)
end
http_send(http_method, path, params={}, headers={}) click to toggle source
# File lib/json_requester.rb, line 12
def http_send(http_method, path, params={}, headers={})
  if http_method == :get
    normal_send(http_method, path, params, headers)
  else
    json_send(http_method, path, params, headers)
  end
end
json_send(http_method, path, params={}, headers={}) click to toggle source
# File lib/json_requester.rb, line 32
def json_send(http_method, path, params={}, headers={})
  conn = init_conn
  res = conn.send(http_method) do |req|
    req.url path
    req.headers = headers if object_present?(headers)
    req.headers['Content-Type'] = 'application/json;charset=utf-8'
    req.body = params.to_json if object_present?(params)
  end
  process_response(res)
rescue => e
  error_response(e)
end
multipart_form_send(http_method, path, params={}, headers={}) click to toggle source
# File lib/json_requester.rb, line 58
def multipart_form_send(http_method, path, params={}, headers={})
  conn = init_conn
  res = conn.send(http_method) do |req|
    req.url path
    req.headers = headers if object_present?(headers)
    req.body = params if object_present?(params)
  end
  process_response(res)
end
normal_send(http_method, path, params={}, headers={}) click to toggle source
# File lib/json_requester.rb, line 20
def normal_send(http_method, path, params={}, headers={})
  conn = init_conn
  res = conn.send(http_method) do |req|
    req.url path
    req.headers = headers if object_present?(headers)
    req.params = params if object_present?(params)
  end
  process_response(res)
rescue => e
  error_response(e)
end

Private Instance Methods

error_response(err) click to toggle source
# File lib/json_requester.rb, line 91
def error_response(err)
  {'status' => 500, 'message' => "#{err.class.name}: #{err.message}"}
end
init_conn() click to toggle source
# File lib/json_requester.rb, line 70
def init_conn
  Faraday.new(url: host) do |faraday|
    faraday.request :multipart if @multipart  # multipart form POST request
    faraday.request  :url_encoded             # form-encode POST params
    faraday.response :logger                  # log requests to $stdout
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
  end
end
object_present?(object) click to toggle source
# File lib/json_requester.rb, line 95
def object_present?(object)
  !(object.nil? || object.empty?)
end
process_response(response) click to toggle source
# File lib/json_requester.rb, line 79
def process_response(response)
  result = {'status' => response.status}
  begin
    body = JSON.parse(response.body)
    body = body.is_a?(Hash) ? body : {'body' => body}
    body['body_status'] = body.delete('status') unless body['status'].is_a?(Integer)
  rescue
    body = {'body' => response.body}
  end
  result.merge(body)
end