Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Tools / GardeningServer / alerts.py
index 8679c11..d8ea975 100644 (file)
@@ -5,46 +5,73 @@
 import calendar
 import datetime
 import json
+import logging
 import webapp2
 import zlib
 
 from google.appengine.api import memcache
 
+LOGGER = logging.getLogger(__name__)
+
 
 class DateTimeEncoder(json.JSONEncoder):
     def default(self, obj):
         if isinstance(obj, datetime.datetime):
             return calendar.timegm(obj.timetuple())
-        # Let the base class default method raise the TypeError
+        # Let the base class default method raise the TypeError.
         return json.JSONEncoder.default(self, obj)
 
 
 class AlertsHandler(webapp2.RequestHandler):
     MEMCACHE_ALERTS_KEY = 'alerts'
 
-    def get(self):
+    # Has no 'response' member.
+    # pylint: disable=E1101
+    def send_json_headers(self):
         self.response.headers.add_header('Access-Control-Allow-Origin', '*')
         self.response.headers['Content-Type'] = 'application/json'
-        compressed = memcache.get(AlertsHandler.MEMCACHE_ALERTS_KEY)
+
+    # Has no 'response' member.
+    # pylint: disable=E1101
+    def send_json_data(self, data):
+        self.send_json_headers()
+        self.response.write(data)
+
+    def generate_json_dump(self, alerts):
+        return json.dumps(alerts, cls=DateTimeEncoder, indent=1)
+
+    def get_from_memcache(self, memcache_key):
+        compressed = memcache.get(memcache_key)
         if not compressed:
+            self.send_json_headers()
             return
         uncompressed = zlib.decompress(compressed)
-        self.response.write(uncompressed)
+        self.send_json_data(uncompressed)
 
-    def post(self):
+    def get(self):
+        self.get_from_memcache(AlertsHandler.MEMCACHE_ALERTS_KEY)
+
+    # Has no 'response' member.
+    # pylint: disable=E1101
+    def post_to_memcache(self, memcache_key):
         try:
             alerts = json.loads(self.request.get('content'))
         except ValueError:
-            self.response.set_status(400, 'content field was not JSON')
+            warning = 'content field was not JSON'
+            self.response.set_status(400, warning)
+            LOGGER.warn(warning)
             return
         alerts.update({
             'date': datetime.datetime.utcnow(),
             'alerts': alerts['alerts']
         })
-        uncompressed = json.dumps(alerts, cls=DateTimeEncoder, indent=1)
+        uncompressed = self.generate_json_dump(alerts)
         compression_level = 1
         compressed = zlib.compress(uncompressed, compression_level)
-        memcache.set(AlertsHandler.MEMCACHE_ALERTS_KEY, compressed)
+        memcache.set(memcache_key, compressed)
+
+    def post(self):
+        self.post_to_memcache(AlertsHandler.MEMCACHE_ALERTS_KEY)
 
 
 app = webapp2.WSGIApplication([