-> request {
session ||= {}
session_options ||= {}
uri = request >>+ HttpFp.to_uri
= (request[:header] || {}).dup
body = request[:body] || ''
content_type_key, val = .detect { |key, val| puts key; key.downcase == "content-type"}
env = {
'REQUEST_METHOD' => request[:method].to_s.upcase,
'CONTENT_TYPE' => .delete(content_type_key),
'CONTENT_LENGTH' => body.bytesize,
'PATH_INFO' => uri.path,
'QUERY_STRING' => uri.query || '',
'SERVER_NAME' => uri.host,
'SERVER_PORT' => uri.port,
'SCRIPT_NAME' => ""
}
env['HTTP_AUTHORIZATION'] = 'Basic ' + [uri.userinfo].pack('m').delete("\r\n") if uri.userinfo
env['rack.input'] = StringIO.new(body)
env['rack.errors'] = $stderr
env['rack.version'] = ::Rack::VERSION
env['rack.url_scheme'] = uri.scheme
env['rack.run_once'] = true
env['rack.session'] = session
env['rack.session.options'] = session_options
.each { |k, v| env["HTTP_#{k.tr('-','_').upcase}"] = v }
env
}