1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
11 from google.appengine.api import memcache
14 class DateTimeEncoder(json.JSONEncoder):
15 def default(self, obj):
16 if isinstance(obj, datetime.datetime):
17 return calendar.timegm(obj.timetuple())
18 # Let the base class default method raise the TypeError
19 return json.JSONEncoder.default(self, obj)
22 class AlertsHandler(webapp2.RequestHandler):
23 MEMCACHE_ALERTS_KEY = 'alerts'
26 self.response.headers.add_header('Access-Control-Allow-Origin', '*')
27 self.response.headers['Content-Type'] = 'application/json'
28 compressed = memcache.get(AlertsHandler.MEMCACHE_ALERTS_KEY)
31 uncompressed = zlib.decompress(compressed)
32 self.response.write(uncompressed)
36 alerts = json.loads(self.request.get('content'))
38 self.response.set_status(400, 'content field was not JSON')
41 'date': datetime.datetime.utcnow(),
42 'alerts': alerts['alerts']
44 uncompressed = json.dumps(alerts, cls=DateTimeEncoder, indent=1)
46 compressed = zlib.compress(uncompressed, compression_level)
47 memcache.set(AlertsHandler.MEMCACHE_ALERTS_KEY, compressed)
50 app = webapp2.WSGIApplication([
51 ('/alerts', AlertsHandler)