Index: chrome/common/extensions/docs/server2/render_servlet.py |
diff --git a/chrome/common/extensions/docs/server2/render_servlet.py b/chrome/common/extensions/docs/server2/render_servlet.py |
index 5b29c3d159d6b627210128c3d5fde29424ca3542..77245d6e3ecec537b7cf80cc56d29683e7037c35 100644 |
--- a/chrome/common/extensions/docs/server2/render_servlet.py |
+++ b/chrome/common/extensions/docs/server2/render_servlet.py |
@@ -8,7 +8,6 @@ import mimetypes |
import traceback |
from urlparse import urlsplit |
-from branch_utility import BranchUtility |
from file_system import FileNotFoundError |
from servlet import Servlet, Response |
import svn_constants |
@@ -21,43 +20,34 @@ class RenderServlet(Servlet): |
'''Servlet which renders templates. |
''' |
class Delegate(object): |
- def CreateServerInstanceForChannel(self, channel): |
- raise NotImplementedError() |
+ def CreateServerInstance(self): |
+ raise NotImplementedError(self.__class__) |
- def __init__(self, request, delegate, default_channel='stable'): |
+ def __init__(self, request, delegate): |
Servlet.__init__(self, request) |
self._delegate = delegate |
- self._default_channel = default_channel |
def Get(self): |
''' Render the page for a request. |
''' |
- headers = self._request.headers |
- channel, path = BranchUtility.SplitChannelNameFromPath(self._request.path) |
+ # TODO(kalman): a consistent path syntax (even a Path class?) so that we |
+ # can stop being so conservative with stripping and adding back the '/'s. |
+ path = self._request.path.lstrip('/') |
if path.split('/')[-1] == 'redirects.json': |
return Response.Ok('') |
- if channel == self._default_channel: |
- return Response.Redirect('/' + path) |
- if channel is None: |
- channel = self._default_channel |
- |
- server_instance = self._delegate.CreateServerInstanceForChannel(channel) |
+ server_instance = self._delegate.CreateServerInstance() |
redirect = server_instance.redirector.Redirect(self._request.host, path) |
if redirect is not None: |
- if (channel != self._default_channel and |
- not urlsplit(redirect).scheme in ('http', 'https')): |
- redirect = '/%s%s' % (channel, redirect) |
return Response.Redirect(redirect) |
- canonical_path = server_instance.path_canonicalizer.Canonicalize(path) |
- redirect = canonical_path.lstrip('/') |
+ canonical_result = server_instance.path_canonicalizer.Canonicalize(path) |
+ redirect = canonical_result.path.lstrip('/') |
if path != redirect: |
- if channel is not None: |
- redirect = '%s/%s' % (channel, canonical_path) |
- return Response.Redirect('/' + redirect) |
+ return Response.Redirect('/' + redirect, |
+ permanent=canonical_result.permanent) |
templates = server_instance.template_data_source_factory.Create( |
self._request, path) |