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

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

Issue 151773002: Docserver: Properly implement the Cron logic for ContentProvider and TemplateDataSource so that the… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 10 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
1 # Copyright 2013 The Chromium Authors. All rights reserved. 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 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import mimetypes 5 import mimetypes
6 import posixpath 6 import posixpath
7 7
8 from compiled_file_system import SingleFile 8 from compiled_file_system import SingleFile
9 from directory_zipper import DirectoryZipper 9 from directory_zipper import DirectoryZipper
10 from docs_server_utils import ToUnicode 10 from docs_server_utils import ToUnicode
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 if self._supports_templates: 80 if self._supports_templates:
81 content = Handlebar(content, name=path) 81 content = Handlebar(content, name=path)
82 elif (mimetype.startswith('text/') or 82 elif (mimetype.startswith('text/') or
83 mimetype in ('application/javascript', 'application/json')): 83 mimetype in ('application/javascript', 'application/json')):
84 content = ToUnicode(text) 84 content = ToUnicode(text)
85 else: 85 else:
86 content = text 86 content = text
87 return ContentAndType(content, mimetype) 87 return ContentAndType(content, mimetype)
88 88
89 def _MaybeMarkdown(self, path): 89 def _MaybeMarkdown(self, path):
90 if posixpath.splitext(path)[1] != '.html': 90 base, ext = posixpath.splitext(path)
91 if ext != '.html':
91 return path 92 return path
92 93 if self.file_system.Exists(path).Get():
93 dirname, file_name = posixpath.split(path)
94 if dirname != '':
95 dirname = dirname + '/'
96 file_list = self.file_system.ReadSingle(dirname).Get()
97 if file_name in file_list:
98 return path 94 return path
99 95 as_md = base + '.md'
100 if posixpath.splitext(file_name)[0] + '.md' in file_list: 96 if self.file_system.Exists(as_md).Get():
101 return posixpath.splitext(path)[0] + '.md' 97 return as_md
102 return path 98 return path
103 99
104 def GetContentAndType(self, path): 100 def GetContentAndType(self, path):
105 path = path.lstrip('/') 101 path = path.lstrip('/')
106 base, ext = posixpath.splitext(path) 102 base, ext = posixpath.splitext(path)
107 103
108 # Check for a zip file first, if zip is enabled. 104 # Check for a zip file first, if zip is enabled.
109 if self._directory_zipper and ext == '.zip': 105 if self._directory_zipper and ext == '.zip':
110 zip_future = self._directory_zipper.Zip(base) 106 zip_future = self._directory_zipper.Zip(base)
111 return Future(delegate=Gettable( 107 return Future(delegate=Gettable(
112 lambda: ContentAndType(zip_future.Get(), 'application/zip'))) 108 lambda: ContentAndType(zip_future.Get(), 'application/zip')))
113 109
114 return self._content_cache.GetFromFile(self._MaybeMarkdown(path)) 110 return self._content_cache.GetFromFile(self._MaybeMarkdown(path))
115 111
116 def Cron(self): 112 def Cron(self):
117 # Running Refresh() on the file system is enough to pull GitHub content, 113 # Running Refresh() on the file system is enough to pull GitHub content,
118 # which is all we need for now while the full render-every-page cron step 114 # which is all we need for now while the full render-every-page cron step
119 # is in effect. 115 # is in effect.
120 # TODO(kalman): Walk over the whole filesystem and compile the content. 116 futures = []
121 return self.file_system.Refresh() 117 for root, _, files in self.file_system.Walk(''):
118 futures += [self.GetContentAndType(posixpath.join(root, filename))
119 for filename in files]
120 return Future(delegate=Gettable(lambda: [f.Get() for f in futures]))
122 121
123 def __repr__(self): 122 def __repr__(self):
124 return 'ContentProvider of <%s>' % repr(self.file_system) 123 return 'ContentProvider of <%s>' % repr(self.file_system)
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/app.yaml ('k') | chrome/common/extensions/docs/server2/cron.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698