class Apia::Request

Attributes

api[RW]
api_path[RW]
arguments[W]
authenticator[RW]
controller[RW]
endpoint[RW]
identity[RW]
namespace[RW]
route[RW]

Public Class Methods

empty(options: {}) click to toggle source
# File lib/apia/request.rb, line 20
def self.empty(options: {})
  new(options)
end

Public Instance Methods

arguments() click to toggle source
# File lib/apia/request.rb, line 24
def arguments
  @arguments ||= {}
end
body?() click to toggle source
# File lib/apia/request.rb, line 38
def body?
  has_header?('rack.input')
end
headers() click to toggle source
# File lib/apia/request.rb, line 28
def headers
  @headers ||= RequestHeaders.create_from_request(self)
end
json_body() click to toggle source
# File lib/apia/request.rb, line 32
def json_body
  return @json_body if instance_variable_defined?('@json_body')

  @json_body = get_json_body_from_body || get_json_body_from_params
end
params() click to toggle source
Calls superclass method
# File lib/apia/request.rb, line 42
def params
  return {} unless body?

  super
end

Private Instance Methods

get_json_body_from_body() click to toggle source
# File lib/apia/request.rb, line 58
def get_json_body_from_body
  return unless content_type =~ /\Aapplication\/json/
  return unless body?

  parse_json_from_string(body.read)
end
get_json_body_from_params() click to toggle source
# File lib/apia/request.rb, line 65
def get_json_body_from_params
  return unless body?
  return unless params['_arguments'].is_a?(String)

  parse_json_from_string(params['_arguments'])
end
parse_json_from_string(body) click to toggle source
# File lib/apia/request.rb, line 50
def parse_json_from_string(body)
  return {} if body.empty?

  JSON.parse(body)
rescue JSON::ParserError => e
  raise InvalidJSONError, e.message
end