summary refs log tree commit diff
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-11-05 11:21:55 +0000
committerKegan Dougal <kegan@matrix.org>2014-11-05 11:21:55 +0000
commit9f6d1b10ad5a9098a8f72157875ce97fc44bc423 (patch)
treeeadbd0f5f69522608c98c3f53e220d926584dda5
parentAdd a bunch more unit tests for matrixService. (diff)
downloadsynapse-9f6d1b10ad5a9098a8f72157875ce97fc44bc423.tar.xz
Be sure to urlencode/decode event types correctly in both the web client and HS.
-rw-r--r--synapse/rest/room.py2
-rw-r--r--syweb/webclient/components/matrix/matrix-service.js4
-rw-r--r--syweb/webclient/test/unit/matrix-service.spec.js6
3 files changed, 6 insertions, 6 deletions
diff --git a/synapse/rest/room.py b/synapse/rest/room.py
index ec0ce78fda..d97babea08 100644
--- a/synapse/rest/room.py
+++ b/synapse/rest/room.py
@@ -148,7 +148,7 @@ class RoomStateEventRestServlet(RestServlet):
         content = _parse_json(request)
 
         event = self.event_factory.create_event(
-            etype=event_type,
+            etype=urllib.unquote(event_type),
             content=content,
             room_id=urllib.unquote(room_id),
             user_id=user.to_string(),
diff --git a/syweb/webclient/components/matrix/matrix-service.js b/syweb/webclient/components/matrix/matrix-service.js
index 5b63fb4a3b..e1e5b88b3e 100644
--- a/syweb/webclient/components/matrix/matrix-service.js
+++ b/syweb/webclient/components/matrix/matrix-service.js
@@ -375,9 +375,9 @@ angular.module('matrixService', [])
         
         
         sendStateEvent: function(room_id, eventType, content, state_key) {
-            var path = "/rooms/$room_id/state/"+eventType;
+            var path = "/rooms/$room_id/state/"+ encodeURIComponent(eventType);
             if (state_key !== undefined) {
-                path += "/" + state_key;
+                path += "/" + encodeURIComponent(state_key);
             }
             room_id = encodeURIComponent(room_id);
             path = path.replace("$room_id", room_id);
diff --git a/syweb/webclient/test/unit/matrix-service.spec.js b/syweb/webclient/test/unit/matrix-service.spec.js
index 95a43057c4..b54163a641 100644
--- a/syweb/webclient/test/unit/matrix-service.spec.js
+++ b/syweb/webclient/test/unit/matrix-service.spec.js
@@ -238,7 +238,7 @@ describe('MatrixService', function() {
             homeserver: "http://example.com"
         });
         var roomId = "!fh38hfwfwef:example.com";
-        var eventType = "com.example.events.test";
+        var eventType = "com.example.events.test:special@characters";
         var content = {
             testing: "1 2 3"
         };
@@ -262,11 +262,11 @@ describe('MatrixService', function() {
             homeserver: "http://example.com"
         });
         var roomId = "!fh38hfwfwef:example.com";
-        var eventType = "com.example.events.test";
+        var eventType = "com.example.events.test:special@characters";
         var content = {
             testing: "1 2 3"
         };
-        var stateKey = "version1";
+        var stateKey = "version:1";
         matrixService.sendStateEvent(roomId, eventType, content, stateKey).then(
         function(response) {
             expect(response.data).toEqual({});