class Atum::Core::Request
Public Class Methods
new(connection, method, path, options)
click to toggle source
# File lib/atum/core/request.rb, line 4 def initialize(connection, method, path, options) @connection = connection @method = method @path = path @headers = options[:headers] || {} @body = options[:body] || nil @query = options[:query] || {} @envelope_name = options[:envelope_name] || 'data' end
Public Instance Methods
make_request(opts = options)
click to toggle source
# File lib/atum/core/request.rb, line 27 def make_request(opts = options) body = opts[:body] headers = opts.fetch(:headers, {}) query = opts[:query] # TODO: Not sure this is required in faraday 0.9.0 if body.is_a?(Hash) body = body.to_json headers['Content-Type'] ||= 'application/json' end @connection.send(@method) do |request| request.url @path request.body = body request.params = query request.headers.merge!(headers) end end
request()
click to toggle source
# File lib/atum/core/request.rb, line 14 def request response = Response.new(make_request) raise(ApiError, request: options, response: response) if response.error? return response.body unless response.json? if response.limit.nil? unenvelope(response.body) else Paginator.new(self, response, options).enumerator end end
unenvelope(body)
click to toggle source
# File lib/atum/core/request.rb, line 46 def unenvelope(body) body[@envelope_name] || body['data'] end
Private Instance Methods
options()
click to toggle source
# File lib/atum/core/request.rb, line 52 def options { headers: @headers, body: @body, query: @query } end