module Rack::Cargo::RequestEnvBuilder

Public Class Methods

call(request, state) click to toggle source
# File lib/rack/cargo/request_env_builder.rb, line 9
def call(request, state)
  request_env = state.fetch(:env).deep_dup

  path, query_string = request[REQUEST_PATH].split("?", 2)
  request_env[ENV_PATH] = path
  request_env[ENV_QUERY_STRING] = query_string || ""
  request_env[ENV_METHOD] = request[REQUEST_METHOD]
  request_env[ENV_INPUT] = StringIO.new(
    io_input_from_request_body(request[REQUEST_BODY])
  )

  state[:request_env] = request_env
end

Private Class Methods

io_input_from_request_body(request_body) click to toggle source

Returns request_body as JSON if it's not nil, otherwise returns empty string.

# File lib/rack/cargo/request_env_builder.rb, line 27
def io_input_from_request_body(request_body)
  return "" if request_body.nil?
  request_body.to_json
end