[z3-checkins] r41929 - z3/deliverance/DeliveranceVHoster/trunk/dvhoster
ianb at codespeak.net
ianb at codespeak.net
Fri Apr 6 00:59:53 CEST 2007
Author: ianb
Date: Fri Apr 6 00:59:52 2007
New Revision: 41929
Modified:
z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py
Log:
Refactoring of the giant __call__ method; separating out the fetching of domain_info
Modified: z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py
==============================================================================
--- z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py (original)
+++ z3/deliverance/DeliveranceVHoster/trunk/dvhoster/dispatcher.py Fri Apr 6 00:59:52 2007
@@ -53,15 +53,7 @@
if 'paste.registry' in environ:
environ['paste.registry'].register(current_environ, environ)
self.clean_environ_headers(environ)
- domain = environ['HTTP_HOST']
- if ':' in domain:
- domain = domain.split(':', 1)[0]
- domain = self.provider.normalize(domain)
- domain_info = self.provider.domain(domain)
- if not domain_info.initialized:
- domain_info.initialize()
- if self.init_domain:
- self.init_domain(domain_info, self.app_conf)
+ domain_info = self.get_domain_info(environ)
environ['dvhoster.domain_info'] = domain_info
environ['dvhoster.base_url'] = construct_url(
environ, with_query_string=False,
@@ -71,19 +63,6 @@
path_info_pop(environ)
subapp = DomainInfoApp(domain_info)
return subapp(environ, start_response)
-
- if domain_info.domain != domain:
- # We got an alias
- assert domain in domain_info.aliases, (
- "Domain %r not found in aliases %r"
- % (domain, domain_info.aliases))
- new_environ = environ.copy()
- new_environ['HTTP_HOST'] = domain_info.domain
- new_url = construct_url(new_environ)
- exc = httpexceptions.HTTPMovedPermanently(
- headers=[('Location', new_url)],
- comment='Redirecting to canonical domain')
- return exc(environ, start_response)
if path_info.startswith('/_rules'):
path_info_pop(environ)
@@ -195,3 +174,29 @@
if self.clean_environ_headers_regex.search(key):
# @@: Should log this
del environ[key]
+
+ def get_domain_info(self, environ):
+ domain = environ['HTTP_HOST']
+ if ':' in domain:
+ domain = domain.split(':', 1)[0]
+ domain = self.provider.normalize(domain)
+ domain_info = self.provider.domain(domain)
+ if not domain_info.initialized:
+ domain_info.initialize()
+ if self.init_domain:
+ self.init_domain(domain_info, self.app_conf)
+
+ if domain_info.domain != domain:
+ # We got an alias
+ assert domain in domain_info.aliases, (
+ "Domain %r not found in aliases %r"
+ % (domain, domain_info.aliases))
+ new_environ = environ.copy()
+ new_environ['HTTP_HOST'] = domain_info.domain
+ new_url = construct_url(new_environ)
+ exc = httpexceptions.HTTPMovedPermanently(
+ headers=[('Location', new_url)],
+ comment='Redirecting to canonical domain')
+ raise exc
+
+ return domain_info
More information about the z3-checkins
mailing list