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

Side by Side Diff: gae/main.py

Issue 954693002: Store each file as "hash/<sha1>", list of hashes as "meta/@<rev>" and serve them at "serve_file/@<r… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/chrome-devtools-frontend
Patch Set: Created 5 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 (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 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 re 5 import re
6 # F0401: 7,0: Unable to import 'webapp2' 6 # F0401: 7,0: Unable to import 'webapp2'
7 # pylint: disable=F0401 7 # pylint: disable=F0401
8 import webapp2 8 import webapp2
9 9
10 import cache 10 import cache
11 import config 11 import config
12 import content_processor 12 import content_processor
13 import content_type 13 import content_type
14 import pre_cacher 14 import pre_cacher
15 import file_reader 15 import file_reader
16 import zip_proxy 16 import zip_proxy
17 17
18 current_config = config.DEFAULT 18 current_config = config.DEFAULT
19 19
20 class MainPage(webapp2.RequestHandler): 20 class MainPage(webapp2.RequestHandler):
21 def get(self): 21 def get(self):
22 self.response.headers['Content-Type'] = 'text/plain' 22 self.response.headers['Content-Type'] = 'text/plain'
23 self.response.write(str(current_config)) 23 self.response.write(str(current_config))
24 24
25 class Server(webapp2.RequestHandler): 25 class Server(webapp2.RequestHandler):
26 def get_file_hash(self, meta_content, path):
mnaganov (inactive) 2015/02/24 14:40:32 We should probably cache '(tag, path) -> hash' som
dgozman 2015/02/25 11:37:13 Done.
27 for line in meta_content.split('\n'):
28 index = line.find(':')
29 if index != -1 and line[(index + 1):] == path:
30 return line[:index]
31 return None
32
26 def get(self, tag_type, tag, path): 33 def get(self, tag_type, tag, path):
27 cache_key_name = '/res/%s/%s/%s' % (tag_type, tag, path) 34 cache_key_name = '/res/%s/%s/%s' % (tag_type, tag, path)
28 content = cache.get_content(cache_key_name) 35 content = cache.get_content(cache_key_name)
29 helper = config.ConfigHelper(current_config) 36 helper = config.ConfigHelper(current_config)
30 37
38 if not content and tag_type == 'file':
mnaganov (inactive) 2015/02/24 14:40:32 No, we shouldn't cache these resources under 'cach
dgozman 2015/02/25 11:37:13 Done.
39 meta_file_name = helper.get_meta_path(tag)
40 meta_content = file_reader.read(helper, meta_file_name)
41 if not meta_content:
42 self.abort(404)
43 file_hash = self.get_file_hash(meta_content, path)
44 if not file_hash:
45 self.abort(404)
46 content = file_reader.read(helper, helper.get_hash_path(file_hash))
47 if not content:
48 self.abort(404)
49 content = content_processor.process(path, content)
50 cache.set_content(cache_key_name, content)
51
31 if not content: 52 if not content:
32 if tag_type == 'rev': 53 if tag_type == 'rev':
33 meta_file_name = helper.get_revision_path(tag) 54 meta_file_name = helper.get_revision_path(tag)
34 elif tag_type =='ver': 55 elif tag_type =='ver':
35 meta_file_name = helper.get_version_path(tag) 56 meta_file_name = helper.get_version_path(tag)
36 else: 57 else:
37 self.abort(404) 58 self.abort(404)
38 59
39 meta_content = file_reader.read(helper, meta_file_name) 60 meta_content = file_reader.read(helper, meta_file_name)
40 if meta_content: 61 if meta_content:
(...skipping 21 matching lines...) Expand all
62 return super(LegacyStatic, self).get('ver', match.group(1) + '0', path) 83 return super(LegacyStatic, self).get('ver', match.group(1) + '0', path)
63 else: 84 else:
64 self.abort(404) 85 self.abort(404)
65 86
66 app = webapp2.WSGIApplication( 87 app = webapp2.WSGIApplication(
67 [('/', MainPage), 88 [('/', MainPage),
68 ('/precache_url', pre_cacher.PreCacherFromUrl), 89 ('/precache_url', pre_cacher.PreCacherFromUrl),
69 webapp2.Route('/serve_<tag_type>/<tag>/<path:.*>', Server), 90 webapp2.Route('/serve_<tag_type>/<tag>/<path:.*>', Server),
70 webapp2.Route('/static/<version>/<path:.*>', LegacyStatic)], 91 webapp2.Route('/static/<version>/<path:.*>', LegacyStatic)],
71 debug=config.IS_DEV_APP_SERVER) 92 debug=config.IS_DEV_APP_SERVER)
OLDNEW
« no previous file with comments | « gae/config.py ('k') | gce/uploader_iteration.sh » ('j') | gce/uploader_iteration.sh » ('J')

Powered by Google App Engine
This is Rietveld 408576698