class Microcon::Request

Attributes

body[R]
headers[R]
params[R]

Public Class Methods

new(env) click to toggle source
# File lib/microcon/request.rb, line 7
def initialize(env)
  @env = env
  @req = Rack::Request.new env
  parse_body
  parse_params
  parse_headers
end

Public Instance Methods

to_h() click to toggle source
# File lib/microcon/request.rb, line 15
def to_h
  {headers: headers, params: params, body: body}
end

Private Instance Methods

parse_body() click to toggle source
# File lib/microcon/request.rb, line 25
def parse_body
  body = @req.body.read
  parsed_body = body.empty? ? {} : Oj.load(body)
  @body = t(:symbolize_keys)[parsed_body]
end
parse_headers() click to toggle source
# File lib/microcon/request.rb, line 31
def parse_headers
  # TODO snake case headers?
  @headers = t(:symbolize_keys)[ @env.select {|k,v| k.start_with? 'HTTP_'}
    .collect {|key, val| [key.sub(/^HTTP_/, '').downcase, val]}
    .instance_eval {|hpairs| Hash[hpairs]} ]
end
parse_params() click to toggle source
# File lib/microcon/request.rb, line 38
def parse_params
  router_params = @env['router.params'] || {} # From Hanami Router
  @params = t(:symbolize_keys)[@req.params.merge(router_params)]
end
t(*args) click to toggle source
# File lib/microcon/request.rb, line 21
def t(*args)
  Functions[*args]
end