| Index: styleguide/c++/chromium-cpp/main.py
|
| diff --git a/styleguide/c++/chromium-cpp/main.py b/styleguide/c++/chromium-cpp/main.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..9017296e5a22871a488c264419329e2ca5edd805
|
| --- /dev/null
|
| +++ b/styleguide/c++/chromium-cpp/main.py
|
| @@ -0,0 +1,49 @@
|
| +#!/usr/bin/env python
|
| +#
|
| +# Copyright 2014 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +from google.appengine.api import memcache
|
| +from google.appengine.api import urlfetch
|
| +import webapp2
|
| +
|
| +import base64
|
| +
|
| +"""A simple appengine app that hosts .html files in src/styleguide/c++ from
|
| +chromium's git repo."""
|
| +
|
| +
|
| +class MainHandler(webapp2.RequestHandler):
|
| + def get(self):
|
| + handler = GitilesMirrorHandler()
|
| + handler.initialize(self.request, self.response)
|
| + return handler.get("c++11.html")
|
| +
|
| +
|
| +BASE = 'https://chromium.googlesource.com/chromium/src.git/' \
|
| + '+/master/styleguide/c++/%s?format=TEXT'
|
| +class GitilesMirrorHandler(webapp2.RequestHandler):
|
| + def get(self, resource):
|
| + if '..' in resource: # No path traversal.
|
| + self.response.write(':-(')
|
| + return
|
| +
|
| + url = BASE % resource
|
| + contents = memcache.get(url)
|
| + if not contents or self.request.get('bust'):
|
| + result = urlfetch.fetch(url)
|
| + if result.status_code != 200:
|
| + self.response.write('http error %d' % result.status_code)
|
| + return
|
| + contents = base64.b64decode(result.content)
|
| + memcache.set(url, contents, time=5*60) # seconds
|
| +
|
| + if resource.endswith('.css'):
|
| + self.response.headers['Content-Type'] = 'text/css'
|
| + self.response.write(contents)
|
| +
|
| +
|
| +app = webapp2.WSGIApplication([
|
| + ('/', MainHandler),
|
| + ('/(\S+\.(?:css|html))', GitilesMirrorHandler),
|
| +], debug=True)
|
|
|