Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Side by Side Diff: chrome/common/extensions/docs/server2/path_canonicalizer.py

Issue 13470005: Refactor the devserver to make it easier to control caching (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cache static files in cron, fix path canonicalizer bug Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import logging
6 import os
7 from third_party.json_schema_compiler.model import UnixName
8 import svn_constants
9
10 class PathCanonicalizer(object):
11 '''Transforms paths into their canonical forms. Since the dev server has had
12 many incarnations - e.g. there didn't use to be apps/ - there may be old
13 paths lying around the webs. We try to redirect those to where they are now.
14 '''
15 def __init__(self, channel, compiled_fs_factory):
16 self._channel = channel
17 self._identity_fs = compiled_fs_factory.GetOrCreateIdentity()
18
19 def Canonicalize(self, path):
20 if any(path.startswith(prefix)
21 for prefix in ('extensions/', 'apps/', 'static/')):
22 return path
23
24 if '/' in path or path == '404.html':
25 return path
26
27 public_template_path = svn_constants.PUBLIC_TEMPLATE_PATH
28 apps_templates = self._identity_fs.GetFromFileListing(
29 '/'.join((public_template_path, 'apps')))
cduvall 2013/04/08 07:09:24 extra parens?
not at google - send to devlin 2013/04/08 12:21:21 Yeah, python (well, string.join) being annoying. N
30 extensions_templates = self._identity_fs.GetFromFileListing(
31 '/'.join((public_template_path, 'extensions')))
cduvall 2013/04/08 07:09:24 same
not at google - send to devlin 2013/04/08 12:21:21 Likewise.
32
33 if self._channel is None:
34 apps_path = '/apps/%s' % path
35 extensions_path = '/extensions/%s' % path
36 else:
37 apps_path = '/%s/apps/%s' % (self._channel, path)
38 extensions_path = '/%s/extensions/%s' % (self._channel, path)
39
40 unix_path = UnixName(os.path.splitext(path)[0])
41 if unix_path in extensions_templates:
cduvall 2013/04/08 07:09:24 should these be checking '%s.html' % unix_path ? O
not at google - send to devlin 2013/04/08 12:21:21 It has an os.path.splitext which strips the html -
42 return extensions_path
43 if unix_path in apps_templates:
44 return app_path
45 return extensions_path
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698