comparison relocator/relocator.py @ 0:68bea9e91bd2

initial import of relocator
author Jeff Hammel <jhammel@mozilla.com>
date Sun, 01 May 2011 13:31:40 -0700
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:68bea9e91bd2
1 """
2 request dispatcher
3 """
4
5 import urlparse
6 from webob import Request
7
8 class Relocator(object):
9
10
11 def __init__(self, app, baseurl):
12 self.app = app
13 self.baseurl = list(urlparse.urlsplit(baseurl))
14
15 def __call__(self, environ, start_response):
16 request = Request(environ)
17 response = request.get_response(self.app)
18 if 'Location' in response.headers:
19 parsed = list(urlparse.urlsplit(response.headers['Location']))
20 location = ['' for i in range(5)] # new location
21
22 # overwrite scheme, netloc, and fragment
23 for i in (0, 1, 4):
24 location[i] = self.baseurl[i]
25
26 # append path and query string
27 for i in (2, 3):
28 location[i] = self.baseurl[i] + parsed[i]
29
30 response.headers['Location'] = urlparse.urlunsplit(location)
31 return response(environ, start_response)