summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-04-16 11:01:09 +0100
committerErik Johnston <erik@matrix.org>2015-04-16 11:01:09 +0100
commitbc9e69e16099142acdb06c3ea7c7ef9aec9e4ec9 (patch)
tree568ca9520c7eea5b00a90ea305bfc495e7ee85b1
parentRemove mysql/maria support (diff)
downloadsynapse-bc9e69e16099142acdb06c3ea7c7ef9aec9e4ec9.tar.xz
Move encoding and decoding of JSON into storage layer
-rw-r--r--synapse/push/pusherpool.py8
-rw-r--r--synapse/storage/pusher.py26
2 files changed, 7 insertions, 27 deletions
diff --git a/synapse/push/pusherpool.py b/synapse/push/pusherpool.py
index 90babd7224..7f3dd50b47 100644
--- a/synapse/push/pusherpool.py
+++ b/synapse/push/pusherpool.py
@@ -19,10 +19,7 @@ from twisted.internet import defer
 from httppusher import HttpPusher
 from synapse.push import PusherConfigException
 
-from syutil.jsonutil import encode_canonical_json
-
 import logging
-import simplejson as json
 
 logger = logging.getLogger(__name__)
 
@@ -52,8 +49,6 @@ class PusherPool:
     @defer.inlineCallbacks
     def start(self):
         pushers = yield self.store.get_all_pushers()
-        for p in pushers:
-            p['data'] = json.loads(p['data'])
         self._start_pushers(pushers)
 
     @defer.inlineCallbacks
@@ -98,7 +93,7 @@ class PusherPool:
             pushkey=pushkey,
             pushkey_ts=self.hs.get_clock().time_msec(),
             lang=lang,
-            data=encode_canonical_json(data).decode("UTF-8"),
+            data=data,
         )
         self._refresh_pusher((app_id, pushkey))
 
@@ -129,7 +124,6 @@ class PusherPool:
         p = yield self.store.get_pushers_by_app_id_and_pushkey(
             app_id_pushkey
         )
-        p['data'] = json.loads(p['data'])
 
         self._start_pushers([p])
 
diff --git a/synapse/storage/pusher.py b/synapse/storage/pusher.py
index 80c3ba154f..5c1c3d32e6 100644
--- a/synapse/storage/pusher.py
+++ b/synapse/storage/pusher.py
@@ -20,7 +20,10 @@ from twisted.internet import defer
 
 from synapse.api.errors import StoreError
 
+from syutil.jsonutil import encode_canonical_json
+
 import logging
+import simplejson as json
 
 logger = logging.getLogger(__name__)
 
@@ -52,7 +55,7 @@ class PusherStore(SQLBaseStore):
                 "device_display_name": r[6],
                 "pushkey": r[7],
                 "pushkey_ts": r[8],
-                "data": r[9],
+                "data": json.loads(r[9]),
                 "last_token": r[10],
                 "last_success": r[11],
                 "failing_since": r[12]
@@ -84,7 +87,7 @@ class PusherStore(SQLBaseStore):
                 "device_display_name": r[6],
                 "pushkey": r[7],
                 "pushkey_ts": r[8],
-                "data": r[9],
+                "data": json.loads(r[9]),
                 "last_token": r[10],
                 "last_success": r[11],
                 "failing_since": r[12]
@@ -114,7 +117,7 @@ class PusherStore(SQLBaseStore):
                     device_display_name=device_display_name,
                     ts=pushkey_ts,
                     lang=lang,
-                    data=data
+                    data=encode_canonical_json(data).decode("UTF-8"),
                 ),
                 insertion_values=dict(
                     id=next_id,
@@ -165,20 +168,3 @@ class PusherStore(SQLBaseStore):
 class PushersTable(Table):
     table_name = "pushers"
 
-    fields = [
-        "id",
-        "user_name",
-        "kind",
-        "profile_tag",
-        "app_id",
-        "app_display_name",
-        "device_display_name",
-        "pushkey",
-        "pushkey_ts",
-        "data",
-        "last_token",
-        "last_success",
-        "failing_since"
-    ]
-
-    EntryType = collections.namedtuple("PusherEntry", fields)