Sha256: e8c6d66bc067b5cddff6c6ca6729155a15b73fb5a9ba79cf9ca1562e74b0670d

Contents?: true

Size: 1.53 KB

Versions: 3

Compression:

Stored size: 1.53 KB

Contents

require 'iowa/Request'
require 'time'

module Iowa

	class Request

		# This class encapsulates an EM Hybrid request.  This is a request that
		# was received by EventMachine but was parsed by the Mongrel HTTP
		# parser.
		
		class EMHybrid < Iowa::Request

			def setup(headers,params,body)
				hn = headers[CX_FORWARDED_HOST] || headers[CHTTP_HOST] || headers[CHOST]
				@hostname,@port = hn.split(/:/)
				@unparsed_uri = params[CREQUEST_URI]
				@uri = params[CREQUEST_URI].gsub(/\?.*$/,'')
				#@uri = params[CPATH_INFO]
				@request_time = Time.now.httpdate
				@request_method = params[CREQUEST_METHOD]
				#@remote_host = request.params[::Mongrel::Const::REMOTE_HOST]
				#@remote_addr = request.params[::Mongrel::Const::REMOTE_ADDR]
				@header_only =  (@request_method == CHEAD) ? true : false
				@args = params[CQUERY_STRING]

				@headers_in = @headers = headers
				
				@params = {}
				if m = MIMERegexp.match(@headers[CContent_type])
					boundary = m[1]
					@params = read_multipart(boundary,@headers[CContent_length],body,@headers[CUser_agent])
				else
					body.each_line {|line| parse_params(line)}
				end

				parse_params(@args) if @args
				
				@status_line = nil
				@headers_out = Iowa::DataTable.new
				@content_type = nil
				@content_encoding = nil
				@content_languages = nil
				@content = ''
			end

			def initialize(headers,params,body)

				@calculate_runtime = false

				setup(headers,params,body)
			end

		end
	end
end

Iowa::Request.Type = Iowa::Request::EMHybrid

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
IOWA-1.0.3 src/iowa/request/EMHybrid.rb
IOWA-1.0.2 src/iowa/request/EMHybrid.rb
IOWA-1.0.0 src/iowa/request/EMHybrid.rb