[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