class Makanai::Request

Attributes

env[R]
method[R]
origin_body[R]
params[RW]
query[R]
url[R]

Public Class Methods

new(env) click to toggle source
Calls superclass method
# File lib/makanai/request.rb, line 12
def initialize(env)
  super
  @env = env
  @url = build_url
  @origin_body = body&.read
  @query = parsed_url.query
  @params = build_params
  @method = build_method
end

Public Instance Methods

root_url() click to toggle source
# File lib/makanai/request.rb, line 22
def root_url
  @root_url ||= "#{parsed_url.scheme}://#{parsed_url.host}:#{parsed_url.port}"
end

Private Instance Methods

build_method() click to toggle source
# File lib/makanai/request.rb, line 44
def build_method
  return 'GET' if env['REQUEST_METHOD'] == 'GET'
  params&.delete('_method') || 'POST'
end
build_params() click to toggle source
# File lib/makanai/request.rb, line 49
def build_params
  case env['REQUEST_METHOD']
  when 'GET'
    return Hash[URI.decode_www_form(query)] if query
  when 'POST'
    return parsed_body if origin_body
  end
end
build_url() click to toggle source
# File lib/makanai/request.rb, line 28
def build_url
  root = "#{env['rack.url_scheme']}://#{env['SERVER_NAME']}"
  root += ":#{env['SERVER_PORT']}#{env['PATH_INFO']}"
  env['QUERY_STRING'] ? (root + "?#{env['QUERY_STRING']}") : root
end
parsed_body() click to toggle source
# File lib/makanai/request.rb, line 34
def parsed_body
  @parsed_body ||= JSON.parse(origin_body)
rescue JSON::ParserError
  @parsed_body ||= origin_body.split('&').map { |param| param.split('=') }.to_h
end
parsed_url() click to toggle source
# File lib/makanai/request.rb, line 40
def parsed_url
  @parsed_url ||= URI.parse(url)
end