Sha256: 37211b92be10237b3a97664a4bd898367c8d258bd6651829bc066df9aacda798
Contents?: true
Size: 1.37 KB
Versions: 4
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module Umbra class Encoder def self.call(env, response) new(env, response).call end def initialize(env, response) @env = env @status, @headers, @body = response end def to_h @to_h ||= { 'request' => { 'scheme' => @env.fetch('rack.url_scheme'), 'host' => @env['HTTP_HOST'] || @env.fetch('SERVER_NAME'), 'uri' => @env.fetch('REQUEST_URI'), 'port' => @env.fetch('SERVER_PORT'), 'method' => @env.fetch('REQUEST_METHOD'), 'query' => @env.fetch('QUERY_STRING'), 'script_name' => @env.fetch('SCRIPT_NAME'), 'path_info' => @env.fetch('PATH_INFO'), 'headers' => request_headers, 'body' => request_body }, 'response' => { 'status' => @status, 'headers' => @headers, 'body' => body_string } } end def call @call ||= MultiJson.dump(to_h) end private def request_headers @request_headers ||= @env.select { |k, _| k.start_with?('HTTP_') } end def request_body @env.fetch('umbra.request_body') end def body_string @body_string ||= begin str = [] @body.each { |x| str << x.to_s } str.join('') end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
umbra-rb-0.3.0.pre | lib/umbra/encoder.rb |
umbra-rb-0.2.0 | lib/umbra/encoder.rb |
umbra-rb-0.1.5.pre | lib/umbra/encoder.rb |
umbra-rb-0.1.4.pre | lib/umbra/encoder.rb |