Class: Spider::HTTP::MongrelServlet

Inherits:
Mongrel::HttpHandler
  • Object
show all
Defined in:
lib/spiderfw/http/adapters/mongrel.rb

Instance Method Summary collapse

Constructor Details

#initialize(server) ⇒ MongrelServlet

Returns a new instance of MongrelServlet.



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/spiderfw/http/adapters/mongrel.rb', line 82

def initialize(server)
    @server = server
    if (Spider.conf.get('webserver.timeout'))
        begin
          require 'system_timer'
          @timer = SystemTimer
        rescue LoadError
          require 'timeout'
          @timer = Timeout
        end

    end
    
    #@request_notify = true
end

Instance Method Details

#normalize_request(params) ⇒ Object



169
170
171
# File 'lib/spiderfw/http/adapters/mongrel.rb', line 169

def normalize_request(params)
    return params
end

#process(request, response) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/spiderfw/http/adapters/mongrel.rb', line 110

def process(request, response)
    Spider.request_started
    @server.request_received
    path = request.params['REQUEST_PATH']
    env = normalize_request(request.params.clone)
    controller_request = Spider::Request.new(env)
    controller_request.server = Mongrel
    controller_request.body = request.body
    controller_request.action = path
    controller_request.request_time = Time.now

    controller_response = Spider::Response.new
    if (Spider.conf.get('http.auto_headers'))
        controller_response.server_output = MongrelIO.new(response, controller_response)
    else
        controller_response.server_output = response
    end
    controller = nil
    begin
        main_block = lambda do
            controller = ::Spider::HTTPController.new(controller_request, controller_response)
            controller.extend(Spider::FirstResponder)
            controller.before(path)
            MongrelIO.send_headers(controller_response, response) unless Spider.conf.get('http.auto_headers')
            controller.execute(path)
            Spider::Logger.debug("Response:")
            Spider::Logger.debug(controller.response)
        end
        if (Spider.conf.get('webserver.timeout'))
            @timer.timeout(Spider.conf.get('webserver.timeout')) do
                main_block.call
            end
        else
            main_block.call
        end
    rescue => exc
        Spider.logger.error(exc)
        controller.ensure if controller
        controller = nil
    ensure
        MongrelIO.send_headers(controller_response, response) unless response.header_sent
        Spider::Logger.debug("---- Closing Mongrel Response ---- ")
        unless response.socket.closed?
            response.socket.flush
            response.finished
            response.socket.close
        end
        Spider.request_finished
    end
    if controller
        controller.after(path)
        controller.ensure
    end
    
    
    
end

#request_begins(params) ⇒ Object



98
99
100
101
# File 'lib/spiderfw/http/adapters/mongrel.rb', line 98

def request_begins(params)
    Spider.logger.debug( "REQUEST BEGINS:")
    Spider.logger.debug(params)
end

#request_progress(params, clen, total) ⇒ Object



103
104
105
106
107
108
# File 'lib/spiderfw/http/adapters/mongrel.rb', line 103

def request_progress(params, clen, total)
    Spider.logger.debug("REQUEST_PROGRESS")
    Spider.logger.debug(params)
    Spider.logger.debug(clen)
    Spider.logger.debug(total)
end