Mercurial > hg > relocator
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/relocator/relocator.py Sun May 01 13:31:40 2011 -0700 @@ -0,0 +1,31 @@ +""" +request dispatcher +""" + +import urlparse +from webob import Request + +class Relocator(object): + + + def __init__(self, app, baseurl): + self.app = app + self.baseurl = list(urlparse.urlsplit(baseurl)) + + def __call__(self, environ, start_response): + request = Request(environ) + response = request.get_response(self.app) + if 'Location' in response.headers: + parsed = list(urlparse.urlsplit(response.headers['Location'])) + location = ['' for i in range(5)] # new location + + # overwrite scheme, netloc, and fragment + for i in (0, 1, 4): + location[i] = self.baseurl[i] + + # append path and query string + for i in (2, 3): + location[i] = self.baseurl[i] + parsed[i] + + response.headers['Location'] = urlparse.urlunsplit(location) + return response(environ, start_response)