class OmiseGO::Request
Constants
- PARAM_FIELDS
Public Class Methods
new(client)
click to toggle source
# File lib/omisego/request.rb, line 5 def initialize(client) @client = client @config = @client.config end
Public Instance Methods
send(path, body, params: {}, conn: new_conn)
click to toggle source
# File lib/omisego/request.rb, line 10 def send(path, body, params: {}, conn: new_conn) body = add_params(body, params) response = conn.post do |req| req.url path req.headers['Authorization'] = authorization req.headers['Accept'] = content_type req.headers['Content-Type'] = content_type req.body = body.to_json if body logger.log_request(req) end logger.log_response(response) unless [200, 500].include?(response.status) return error('invalid_status_code', "The server returned an invalid status code: #{response.status}") end json = JSON.parse(response.body) Response.new(json, @client) rescue JSON::ParserError => e error('json_parsing_error', "The JSON received from the server could not be parsed: #{e.message}") rescue Faraday::Error::ConnectionFailed => e error('connection_failed', e.message) end
Private Instance Methods
add_params(body, params)
click to toggle source
# File lib/omisego/request.rb, line 40 def add_params(body, params) params = params.select { |key, _| PARAM_FIELDS.include?(key) } body.merge(params) end
content_type()
click to toggle source
# File lib/omisego/request.rb, line 62 def content_type "application/vnd.omisego.v#{@config.api_version}+json" end
error(code, description)
click to toggle source
# File lib/omisego/request.rb, line 45 def error(code, description) Response.new({ 'success' => false, 'version' => @config.api_version, 'data' => { 'object' => 'error', 'code' => code, 'description' => description, 'messages' => [] } }, @client) end
logger()
click to toggle source
# File lib/omisego/request.rb, line 58 def logger @logger ||= HTTPLogger.new(@config.logger) end
new_conn()
click to toggle source
# File lib/omisego/request.rb, line 72 def new_conn @conn = Faraday.new(url: "#{@config.base_url}#{@config.api_prefix}") end