diff --git a/synapse/rest/admin.py b/synapse/rest/admin.py
index ed9b484623..d74c551512 100644
--- a/synapse/rest/admin.py
+++ b/synapse/rest/admin.py
@@ -35,7 +35,7 @@ class WhoisRestServlet(RestServlet):
if not is_admin and target_user != auth_user:
raise AuthError(403, "You are not a server admin")
- if not target_user.is_mine:
+ if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only whois a local user")
ret = yield self.handlers.admin_handler.get_whois(target_user)
diff --git a/synapse/rest/base.py b/synapse/rest/base.py
index 79fc4dfb84..72bb66ddda 100644
--- a/synapse/rest/base.py
+++ b/synapse/rest/base.py
@@ -63,7 +63,7 @@ class RestServlet(object):
self.hs = hs
self.handlers = hs.get_handlers()
- self.event_factory = hs.get_event_factory()
+ self.builder_factory = hs.get_event_builder_factory()
self.auth = hs.get_auth()
self.txns = HttpTransactionStore()
diff --git a/synapse/rest/login.py b/synapse/rest/login.py
index ad71f6c61d..875da076af 100644
--- a/synapse/rest/login.py
+++ b/synapse/rest/login.py
@@ -47,8 +47,8 @@ class LoginRestServlet(RestServlet):
@defer.inlineCallbacks
def do_password_login(self, login_submission):
if not login_submission["user"].startswith('@'):
- login_submission["user"] = UserID.create_local(
- login_submission["user"], self.hs).to_string()
+ login_submission["user"] = UserID.create(
+ login_submission["user"], self.hs.hostname).to_string()
handler = self.handlers.login_handler
token = yield handler.login(
diff --git a/synapse/rest/presence.py b/synapse/rest/presence.py
index 502ed0d4ca..062c895595 100644
--- a/synapse/rest/presence.py
+++ b/synapse/rest/presence.py
@@ -83,7 +83,7 @@ class PresenceListRestServlet(RestServlet):
user_id = urllib.unquote(user_id)
user = self.hs.parse_userid(user_id)
- if not user.is_mine:
+ if not self.hs.is_mine(user):
raise SynapseError(400, "User not hosted on this Home Server")
if auth_user != user:
@@ -104,7 +104,7 @@ class PresenceListRestServlet(RestServlet):
user_id = urllib.unquote(user_id)
user = self.hs.parse_userid(user_id)
- if not user.is_mine:
+ if not self.hs.is_mine(user):
raise SynapseError(400, "User not hosted on this Home Server")
if auth_user != user:
diff --git a/synapse/rest/register.py b/synapse/rest/register.py
index f25e23a158..4f0f5a7531 100644
--- a/synapse/rest/register.py
+++ b/synapse/rest/register.py
@@ -21,6 +21,8 @@ from synapse.api.constants import LoginType
from base import RestServlet, client_path_pattern
import synapse.util.stringutils as stringutils
+from synapse.util.async import run_on_reactor
+
from hashlib import sha1
import hmac
import json
@@ -233,7 +235,7 @@ class RegisterRestServlet(RestServlet):
@defer.inlineCallbacks
def _do_password(self, request, register_json, session):
- yield
+ yield run_on_reactor()
if (self.hs.config.enable_registration_captcha and
not session[LoginType.RECAPTCHA]):
# captcha should've been done by this stage!
diff --git a/synapse/rest/room.py b/synapse/rest/room.py
index 3147d7a60b..3d78b4ff5c 100644
--- a/synapse/rest/room.py
+++ b/synapse/rest/room.py
@@ -117,10 +117,10 @@ class RoomStateEventRestServlet(RestServlet):
self.on_PUT_no_state_key)
def on_GET_no_state_key(self, request, room_id, event_type):
- return self.on_GET(request, room_id, event_type, "")
+ return self.on_GET(request, room_id, event_type, None)
def on_PUT_no_state_key(self, request, room_id, event_type):
- return self.on_PUT(request, room_id, event_type, "")
+ return self.on_PUT(request, room_id, event_type, None)
@defer.inlineCallbacks
def on_GET(self, request, room_id, event_type, state_key):
@@ -147,28 +147,18 @@ class RoomStateEventRestServlet(RestServlet):
content = _parse_json(request)
- event = self.event_factory.create_event(
- etype=event_type, # already urldecoded
- content=content,
- room_id=urllib.unquote(room_id),
- user_id=user.to_string(),
- state_key=urllib.unquote(state_key)
- )
-
- self.validator.validate(event)
+ msg_handler = self.handlers.message_handler
+ yield msg_handler.handle_event(
+ {
+ "type": event_type,
+ "content": content,
+ "room_id": room_id,
+ "sender": user.to_string(),
+ "state_key": urllib.unquote(state_key),
+ }
+ )
- if event_type == RoomMemberEvent.TYPE:
- # membership events are special
- handler = self.handlers.room_member_handler
- yield handler.change_membership(event)
- defer.returnValue((200, {}))
- else:
- # store random bits of state
- msg_handler = self.handlers.message_handler
- yield msg_handler.store_room_data(
- event=event
- )
- defer.returnValue((200, {}))
+ defer.returnValue((200, {}))
# TODO: Needs unit testing for generic events + feedback
@@ -184,17 +174,15 @@ class RoomSendEventRestServlet(RestServlet):
user = yield self.auth.get_user_by_req(request)
content = _parse_json(request)
- event = self.event_factory.create_event(
- etype=urllib.unquote(event_type),
- room_id=urllib.unquote(room_id),
- user_id=user.to_string(),
- content=content
- )
-
- self.validator.validate(event)
-
msg_handler = self.handlers.message_handler
- yield msg_handler.send_message(event)
+ event = yield msg_handler.handle_event(
+ {
+ "type": urllib.unquote(event_type),
+ "content": content,
+ "room_id": urllib.unquote(room_id),
+ "sender": user.to_string(),
+ }
+ )
defer.returnValue((200, {"event_id": event.event_id}))
@@ -251,18 +239,17 @@ class JoinRoomAliasServlet(RestServlet):
ret_dict = yield handler.join_room_alias(user, identifier)
defer.returnValue((200, ret_dict))
else: # room id
- event = self.event_factory.create_event(
- etype=RoomMemberEvent.TYPE,
- content={"membership": Membership.JOIN},
- room_id=urllib.unquote(identifier.to_string()),
- user_id=user.to_string(),
- state_key=user.to_string()
+ msg_handler = self.handlers.message_handler
+ yield msg_handler.handle_event(
+ {
+ "type": RoomMemberEvent.TYPE,
+ "content": {"membership": Membership.JOIN},
+ "room_id": urllib.unquote(identifier.to_string()),
+ "sender": user.to_string(),
+ "state_key": user.to_string(),
+ }
)
- self.validator.validate(event)
-
- handler = self.handlers.room_member_handler
- yield handler.change_membership(event)
defer.returnValue((200, {}))
@defer.inlineCallbacks
@@ -414,18 +401,17 @@ class RoomMembershipRestServlet(RestServlet):
if membership_action == "kick":
membership_action = "leave"
- event = self.event_factory.create_event(
- etype=RoomMemberEvent.TYPE,
- content={"membership": unicode(membership_action)},
- room_id=urllib.unquote(room_id),
- user_id=user.to_string(),
- state_key=state_key
+ msg_handler = self.handlers.message_handler
+ yield msg_handler.handle_event(
+ {
+ "type": RoomMemberEvent.TYPE,
+ "content": {"membership": unicode(membership_action)},
+ "room_id": urllib.unquote(room_id),
+ "sender": user.to_string(),
+ "state_key": state_key,
+ }
)
- self.validator.validate(event)
-
- handler = self.handlers.room_member_handler
- yield handler.change_membership(event)
defer.returnValue((200, {}))
@defer.inlineCallbacks
@@ -453,18 +439,16 @@ class RoomRedactEventRestServlet(RestServlet):
user = yield self.auth.get_user_by_req(request)
content = _parse_json(request)
- event = self.event_factory.create_event(
- etype=RoomRedactionEvent.TYPE,
- room_id=urllib.unquote(room_id),
- user_id=user.to_string(),
- content=content,
- redacts=urllib.unquote(event_id),
- )
-
- self.validator.validate(event)
-
msg_handler = self.handlers.message_handler
- yield msg_handler.send_message(event)
+ event = yield msg_handler.handle_event(
+ {
+ "type": RoomRedactionEvent.TYPE,
+ "content": content,
+ "room_id": urllib.unquote(room_id),
+ "sender": user.to_string(),
+ "redacts": urllib.unquote(event_id),
+ }
+ )
defer.returnValue((200, {"event_id": event.event_id}))
|