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