| 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()
|
| + 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)
|
|
|