summary refs log tree commit diff
path: root/synapse/api
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-08-28 10:59:15 +0100
committerErik Johnston <erik@matrix.org>2014-08-28 10:59:15 +0100
commitd2bc5d6f29b894516190f24619baf19e216643b7 (patch)
treec9a952612510bdbf696f7be452e02e4920b76b52 /synapse/api
parentFix typo in NullSource.get_pagination_rows. Remove unused import. (diff)
downloadsynapse-d2bc5d6f29b894516190f24619baf19e216643b7.tar.xz
Create the correct events with the right configuration when creating a new room.
Diffstat (limited to 'synapse/api')
-rw-r--r--synapse/api/constants.py7
-rw-r--r--synapse/api/events/__init__.py7
-rw-r--r--synapse/api/events/factory.py8
-rw-r--r--synapse/api/events/room.py30
4 files changed, 50 insertions, 2 deletions
diff --git a/synapse/api/constants.py b/synapse/api/constants.py
index f69f2445a2..9b5b9f5936 100644
--- a/synapse/api/constants.py
+++ b/synapse/api/constants.py
@@ -42,3 +42,10 @@ class PresenceState(object):
     UNAVAILABLE = u"unavailable"
     ONLINE = u"online"
     FREE_FOR_CHAT = u"free_for_chat"
+
+
+class JoinRules(object):
+    PUBLIC = u"public"
+    KNOCK = u"knock"
+    INVITE = u"invite"
+    PRIVATE = u"private"
diff --git a/synapse/api/events/__init__.py b/synapse/api/events/__init__.py
index f9653e0b2a..bf8d288acc 100644
--- a/synapse/api/events/__init__.py
+++ b/synapse/api/events/__init__.py
@@ -152,3 +152,10 @@ class SynapseEvent(JsonEncodedObject):
                         msg = self._check_json(entry, template[key][0])
                         if msg:
                             return msg
+
+
+class SynapseStateEvent(SynapseEvent):
+     def __init__(self, **kwargs):
+        if "state_key" not in kwargs:
+            kwargs["state_key"] = ""
+        super(SynapseStateEvent, self).__init__(**kwargs)
diff --git a/synapse/api/events/factory.py b/synapse/api/events/factory.py
index c2cdcddf41..7c1259d617 100644
--- a/synapse/api/events/factory.py
+++ b/synapse/api/events/factory.py
@@ -16,6 +16,8 @@
 from synapse.api.events.room import (
     RoomTopicEvent, MessageEvent, RoomMemberEvent, FeedbackEvent,
     InviteJoinEvent, RoomConfigEvent, RoomNameEvent, GenericEvent,
+    RoomPowerLevelsEvent, RoomDefaultLevelEvent, RoomJoinRulesEvent,
+    RoomCreateEvent,
 )
 
 from synapse.util.stringutils import random_string
@@ -30,7 +32,11 @@ class EventFactory(object):
         RoomMemberEvent,
         FeedbackEvent,
         InviteJoinEvent,
-        RoomConfigEvent
+        RoomConfigEvent,
+        RoomPowerLevelsEvent,
+        RoomDefaultLevelEvent,
+        RoomJoinRulesEvent,
+        RoomCreateEvent,
     ]
 
     def __init__(self, hs):
diff --git a/synapse/api/events/room.py b/synapse/api/events/room.py
index 9faad57ac0..b63529bb31 100644
--- a/synapse/api/events/room.py
+++ b/synapse/api/events/room.py
@@ -15,7 +15,7 @@
 
 from synapse.api.constants import Feedback, Membership
 from synapse.api.errors import SynapseError
-from . import SynapseEvent
+from . import SynapseEvent, SynapseStateEvent
 
 
 class GenericEvent(SynapseEvent):
@@ -132,3 +132,31 @@ class RoomConfigEvent(SynapseEvent):
 
     def get_content_template(self):
         return {}
+
+
+class RoomCreateEvent(SynapseStateEvent):
+    TYPE = "m.room.create"
+
+    def get_content_template(self):
+        return {}
+
+
+class RoomJoinRulesEvent(SynapseStateEvent):
+    TYPE = "m.room.join_rules"
+
+    def get_content_template(self):
+        return {}
+
+
+class RoomPowerLevelsEvent(SynapseStateEvent):
+    TYPE = "m.room.power_levels"
+
+    def get_content_template(self):
+        return {}
+
+
+class RoomDefaultLevelEvent(SynapseStateEvent):
+    TYPE = "m.room.default_level"
+
+    def get_content_template(self):
+        return {}