Chromium Code Reviews| Index: appengine/chrome_infra_mon_proxy/common.py |
| diff --git a/appengine/chrome_infra_mon_proxy/common.py b/appengine/chrome_infra_mon_proxy/common.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fa08ac2a5309accec08f4555ff677c08058d01b2 |
| --- /dev/null |
| +++ b/appengine/chrome_infra_mon_proxy/common.py |
| @@ -0,0 +1,59 @@ |
| +# Copyright 2015 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. |
| + |
| +import hashlib |
| +import logging |
| +import os |
| +import sys |
| +import webapp2 |
| + |
| +from google.appengine.ext import ndb |
| +from webapp2_extras import jinja2 |
| + |
| +CONFIG_DATA_KEY = 'config_data_key' |
| + |
| + |
| +def is_development_server(): |
| + return os.environ.get('SERVER_SOFTWARE', '').startswith('Development') |
| + |
| + |
| +class MonAcqData(ndb.Model): |
| + """Store the sensitive endpoint data.""" |
| + credentials = ndb.JsonProperty() |
|
agable
2015/04/23 19:29:37
I still think it makes sense for the credentials j
Sergey Berezin (google)
2015/04/24 19:09:52
Acknowledged.
|
| + url = ndb.StringProperty() |
| + scopes = ndb.StringProperty(repeated=True) |
| + headers = ndb.JsonProperty(default={}) |
| + |
| + |
| +def payload_stats(data): |
| + md5 = hashlib.md5() |
| + md5.update(data) |
| + md5hex = md5.hexdigest() |
| + return 'type=%s, %d bytes, md5=%s' % (type(data), len(data), md5hex) |
| + |
| + |
| +class BaseHandler(webapp2.RequestHandler): |
| + """Provide a cached Jinja environment to each request.""" |
| + |
| + def __init__(self, *args, **kwargs): |
| + webapp2.RequestHandler.__init__(self, *args, **kwargs) |
| + |
| + @staticmethod |
| + def jinja2_factory(app): |
| + template_dir = os.path.abspath( |
| + os.path.join(os.path.dirname(__file__), 'templates')) |
| + config = {'template_path': template_dir} |
| + jinja = jinja2.Jinja2(app, config=config) |
| + return jinja |
| + |
| + @webapp2.cached_property |
| + def jinja2(self): |
| + # Returns a Jinja2 renderer cached in the app registry. |
| + return jinja2.get_jinja2( |
| + app=self.app, factory=BaseHandler.jinja2_factory) |
| + |
| + def render_response(self, _template, **context): |
| + # Renders a template and writes the result to the response. |
| + rv = self.jinja2.render_template(_template, **context) |
| + self.response.write(rv) |