Révision 9bc2c9eb
Ajouté par Jérôme Schneider il y a plus de 9 ans
mandaye/dispatcher.py | ||
---|---|---|
6 | 6 |
from importlib import import_module |
7 | 7 |
|
8 | 8 |
from mandaye import config |
9 |
from mandaye.http import HTTPRequest, HTTPResponse |
|
9 | 10 |
from mandaye.log import logger |
10 | 11 |
from mandaye.mappers import default |
11 | 12 |
from mandaye.response import _500, _302 |
... | ... | |
37 | 38 |
target_url: the full url of your destination |
38 | 39 |
mepper: python module with the mapper |
39 | 40 |
""" |
40 |
self.target = urlparse(target_url) |
|
41 | 41 |
self.env = env |
42 |
self.target = urlparse(target_url) |
|
42 | 43 |
self.env['target'] = self.target |
43 | 44 |
self.mapper_name = mapper_name |
44 | 45 |
self.mapper = import_mapping(mapper_name) |
... | ... | |
164 | 165 |
for hook in self.req_mapping['on_request']: |
165 | 166 |
if not self._is_cond_respected(hook, request, None): |
166 | 167 |
continue |
167 |
new_request = self._call_hook(hook, request) |
|
168 |
if new_request: |
|
169 |
request = new_request |
|
170 |
else: |
|
171 |
logger.warning("%s On_request hook %s failed (empty request)" % \ |
|
172 |
(self.env['PATH_INFO'], hook['filter'])) |
|
173 |
return request |
|
168 |
response = self._call_hook(hook, request) |
|
169 |
if response and isinstance(response, HTTPResponse): |
|
170 |
return response |
|
171 |
elif response and isinstance(response, HTTPRequest): |
|
172 |
logger.warning('DEPRECATED hook %s: a request hook must return None or an HTTPResponse nothing else', |
|
173 |
hook['filter']) |
|
174 |
elif response: |
|
175 |
logger.warning("%s on_request hook (%s) must return None or an HTTPResponse nothing else", |
|
176 |
self.env['PATH_INFO'], hook['filter']) |
|
177 |
return |
|
174 | 178 |
|
175 | 179 |
def mod_response(self, request, response): |
176 | 180 |
""" Modify the response. This will load on_response filters. |
mandaye/filters/default.py | ||
---|---|---|
25 | 25 |
# Add forwarded header like Apache |
26 | 26 |
request.headers.addheader('X-Forwarded-For', env['REMOTE_ADDR']) |
27 | 27 |
request.headers.addheader('X-Forwarded-Host', env['HTTP_HOST']) |
28 |
return request |
|
29 | 28 |
|
30 | 29 |
@staticmethod |
31 | 30 |
def on_response(env, values, request, response): |
mandaye/server.py | ||
---|---|---|
120 | 120 |
(conf_file, conf['mapper']) |
121 | 121 |
logger.error(err) |
122 | 122 |
raise ImproperlyConfigured, err |
123 |
self.env['mandaye.auth_type'] = conf['mapper'] |
|
124 | 123 |
if not config.authentifications.has_key(conf['auth_type']): |
125 | 124 |
err = '%s: authentification %s not found' % \ |
126 | 125 |
(conf_file, conf['auth_type']) |
... | ... | |
198 | 197 |
def on_request(self, start_response): |
199 | 198 |
request = self._get_request() |
200 | 199 |
# Calling the dispatcher hook for the request |
201 |
request = self.dispatcher.mod_request(request) |
|
202 |
if not request: |
|
203 |
return self.on_response(start_response, |
|
204 |
_500(self.env["PATH_INFO"], "Empty request")) |
|
200 |
response = self.dispatcher.mod_request(request) |
|
201 |
if response: |
|
202 |
return response |
|
205 | 203 |
if not request.target: |
206 | 204 |
response = self.dispatcher.get_response(request) |
207 | 205 |
elif not "://" in request.target: |
Formats disponibles : Unified diff
on_request: allow hook to return a reponse
Closes #6130