@@ -34,6 +34,7 @@ class DirectoryHandler(BaseHandler): | |||
self.state = hs.get_state_handler() | |||
self.appservice_handler = hs.get_application_service_handler() | |||
self.event_creation_handler = hs.get_event_creation_handler() | |||
self.federation = hs.get_replication_layer() | |||
self.federation.register_query_handler( | |||
@@ -249,8 +250,7 @@ class DirectoryHandler(BaseHandler): | |||
def send_room_alias_update_event(self, requester, user_id, room_id): | |||
aliases = yield self.store.get_aliases_for_room(room_id) | |||
msg_handler = self.hs.get_handlers().message_handler | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_handler.create_and_send_nonmember_event( | |||
requester, | |||
{ | |||
"type": EventTypes.Aliases, | |||
@@ -272,8 +272,7 @@ class DirectoryHandler(BaseHandler): | |||
if not alias_event or alias_event.content.get("alias", "") != alias_str: | |||
return | |||
msg_handler = self.hs.get_handlers().message_handler | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_handler.create_and_send_nonmember_event( | |||
requester, | |||
{ | |||
"type": EventTypes.CanonicalAlias, | |||
@@ -75,6 +75,7 @@ class FederationHandler(BaseHandler): | |||
self.is_mine_id = hs.is_mine_id | |||
self.pusher_pool = hs.get_pusherpool() | |||
self.spam_checker = hs.get_spam_checker() | |||
self.event_creation_handler = hs.get_event_creation_handler() | |||
self.replication_layer.set_handler(self) | |||
@@ -1007,8 +1008,7 @@ class FederationHandler(BaseHandler): | |||
}) | |||
try: | |||
message_handler = self.hs.get_handlers().message_handler | |||
event, context = yield message_handler._create_new_client_event( | |||
event, context = yield self.event_creation_handler._create_new_client_event( | |||
builder=builder, | |||
) | |||
except AuthError as e: | |||
@@ -1248,8 +1248,7 @@ class FederationHandler(BaseHandler): | |||
"state_key": user_id, | |||
}) | |||
message_handler = self.hs.get_handlers().message_handler | |||
event, context = yield message_handler._create_new_client_event( | |||
event, context = yield self.event_creation_handler._create_new_client_event( | |||
builder=builder, | |||
) | |||
@@ -2120,8 +2119,7 @@ class FederationHandler(BaseHandler): | |||
if (yield self.auth.check_host_in_room(room_id, self.hs.hostname)): | |||
builder = self.event_builder_factory.new(event_dict) | |||
EventValidator().validate_new(builder) | |||
message_handler = self.hs.get_handlers().message_handler | |||
event, context = yield message_handler._create_new_client_event( | |||
event, context = yield self.event_creation_handler._create_new_client_event( | |||
builder=builder | |||
) | |||
@@ -2159,8 +2157,7 @@ class FederationHandler(BaseHandler): | |||
""" | |||
builder = self.event_builder_factory.new(event_dict) | |||
message_handler = self.hs.get_handlers().message_handler | |||
event, context = yield message_handler._create_new_client_event( | |||
event, context = yield self.event_creation_handler._create_new_client_event( | |||
builder=builder, | |||
) | |||
@@ -2210,8 +2207,9 @@ class FederationHandler(BaseHandler): | |||
builder = self.event_builder_factory.new(event_dict) | |||
EventValidator().validate_new(builder) | |||
message_handler = self.hs.get_handlers().message_handler | |||
event, context = yield message_handler._create_new_client_event(builder=builder) | |||
event, context = yield self.event_creation_handler._create_new_client_event( | |||
builder=builder, | |||
) | |||
defer.returnValue((event, context)) | |||
@defer.inlineCallbacks | |||
@@ -64,6 +64,7 @@ class RoomCreationHandler(BaseHandler): | |||
super(RoomCreationHandler, self).__init__(hs) | |||
self.spam_checker = hs.get_spam_checker() | |||
self.event_creation_handler = hs.get_event_creation_handler() | |||
@defer.inlineCallbacks | |||
def create_room(self, requester, config, ratelimit=True): | |||
@@ -163,13 +164,11 @@ class RoomCreationHandler(BaseHandler): | |||
creation_content = config.get("creation_content", {}) | |||
msg_handler = self.hs.get_handlers().message_handler | |||
room_member_handler = self.hs.get_handlers().room_member_handler | |||
yield self._send_events_for_new_room( | |||
requester, | |||
room_id, | |||
msg_handler, | |||
room_member_handler, | |||
preset_config=preset_config, | |||
invite_list=invite_list, | |||
@@ -181,7 +180,7 @@ class RoomCreationHandler(BaseHandler): | |||
if "name" in config: | |||
name = config["name"] | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_handler.create_and_send_nonmember_event( | |||
requester, | |||
{ | |||
"type": EventTypes.Name, | |||
@@ -194,7 +193,7 @@ class RoomCreationHandler(BaseHandler): | |||
if "topic" in config: | |||
topic = config["topic"] | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_handler.create_and_send_nonmember_event( | |||
requester, | |||
{ | |||
"type": EventTypes.Topic, | |||
@@ -249,7 +248,6 @@ class RoomCreationHandler(BaseHandler): | |||
self, | |||
creator, # A Requester object. | |||
room_id, | |||
msg_handler, | |||
room_member_handler, | |||
preset_config, | |||
invite_list, | |||
@@ -272,7 +270,7 @@ class RoomCreationHandler(BaseHandler): | |||
@defer.inlineCallbacks | |||
def send(etype, content, **kwargs): | |||
event = create(etype, content, **kwargs) | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_handler.create_and_send_nonmember_event( | |||
creator, | |||
event, | |||
ratelimit=False | |||
@@ -46,6 +46,7 @@ class RoomMemberHandler(BaseHandler): | |||
super(RoomMemberHandler, self).__init__(hs) | |||
self.profile_handler = hs.get_profile_handler() | |||
self.event_creation_hander = hs.get_event_creation_handler() | |||
self.member_linearizer = Linearizer(name="member") | |||
@@ -66,13 +67,12 @@ class RoomMemberHandler(BaseHandler): | |||
): | |||
if content is None: | |||
content = {} | |||
msg_handler = self.hs.get_handlers().message_handler | |||
content["membership"] = membership | |||
if requester.is_guest: | |||
content["kind"] = "guest" | |||
event, context = yield msg_handler.create_event( | |||
event, context = yield self.event_creation_hander.create_event( | |||
requester, | |||
{ | |||
"type": EventTypes.Member, | |||
@@ -90,12 +90,14 @@ class RoomMemberHandler(BaseHandler): | |||
) | |||
# Check if this event matches the previous membership event for the user. | |||
duplicate = yield msg_handler.deduplicate_state_event(event, context) | |||
duplicate = yield self.event_creation_hander.deduplicate_state_event( | |||
event, context, | |||
) | |||
if duplicate is not None: | |||
# Discard the new event since this membership change is a no-op. | |||
defer.returnValue(duplicate) | |||
yield msg_handler.handle_new_client_event( | |||
yield self.event_creation_hander.handle_new_client_event( | |||
requester, | |||
event, | |||
context, | |||
@@ -394,8 +396,9 @@ class RoomMemberHandler(BaseHandler): | |||
else: | |||
requester = synapse.types.create_requester(target_user) | |||
message_handler = self.hs.get_handlers().message_handler | |||
prev_event = yield message_handler.deduplicate_state_event(event, context) | |||
prev_event = yield self.event_creation_hander.deduplicate_state_event( | |||
event, context, | |||
) | |||
if prev_event is not None: | |||
return | |||
@@ -412,7 +415,7 @@ class RoomMemberHandler(BaseHandler): | |||
if is_blocked: | |||
raise SynapseError(403, "This room has been blocked on this server") | |||
yield message_handler.handle_new_client_event( | |||
yield self.event_creation_hander.handle_new_client_event( | |||
requester, | |||
event, | |||
context, | |||
@@ -644,8 +647,7 @@ class RoomMemberHandler(BaseHandler): | |||
) | |||
) | |||
msg_handler = self.hs.get_handlers().message_handler | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_hander.create_and_send_nonmember_event( | |||
requester, | |||
{ | |||
"type": EventTypes.ThirdPartyInvite, | |||
@@ -171,6 +171,7 @@ class ShutdownRoomRestServlet(ClientV1RestServlet): | |||
self.store = hs.get_datastore() | |||
self.handlers = hs.get_handlers() | |||
self.state = hs.get_state_handler() | |||
self.event_creation_handler = hs.get_event_creation_handler() | |||
@defer.inlineCallbacks | |||
def on_POST(self, request, room_id): | |||
@@ -203,8 +204,7 @@ class ShutdownRoomRestServlet(ClientV1RestServlet): | |||
) | |||
new_room_id = info["room_id"] | |||
msg_handler = self.handlers.message_handler | |||
yield msg_handler.create_and_send_nonmember_event( | |||
yield self.event_creation_handler.create_and_send_nonmember_event( | |||
room_creator_requester, | |||
{ | |||
"type": "m.room.message", | |||
@@ -82,6 +82,7 @@ class RoomStateEventRestServlet(ClientV1RestServlet): | |||
def __init__(self, hs): | |||
super(RoomStateEventRestServlet, self).__init__(hs) | |||
self.handlers = hs.get_handlers() | |||
self.event_creation_hander = hs.get_event_creation_handler() | |||
def register(self, http_server): | |||
# /room/$roomid/state/$eventtype | |||
@@ -162,15 +163,16 @@ class RoomStateEventRestServlet(ClientV1RestServlet): | |||
content=content, | |||
) | |||
else: | |||
msg_handler = self.handlers.message_handler | |||
event, context = yield msg_handler.create_event( | |||
event, context = yield self.event_creation_hander.create_event( | |||
requester, | |||
event_dict, | |||
token_id=requester.access_token_id, | |||
txn_id=txn_id, | |||
) | |||
yield msg_handler.send_nonmember_event(requester, event, context) | |||
yield self.event_creation_hander.send_nonmember_event( | |||
requester, event, context, | |||
) | |||
ret = {} | |||
if event: | |||
@@ -184,6 +186,7 @@ class RoomSendEventRestServlet(ClientV1RestServlet): | |||
def __init__(self, hs): | |||
super(RoomSendEventRestServlet, self).__init__(hs) | |||
self.handlers = hs.get_handlers() | |||
self.event_creation_hander = hs.get_event_creation_handler() | |||
def register(self, http_server): | |||
# /rooms/$roomid/send/$event_type[/$txn_id] | |||
@@ -205,8 +208,7 @@ class RoomSendEventRestServlet(ClientV1RestServlet): | |||
if 'ts' in request.args and requester.app_service: | |||
event_dict['origin_server_ts'] = parse_integer(request, "ts", 0) | |||
msg_handler = self.handlers.message_handler | |||
event = yield msg_handler.create_and_send_nonmember_event( | |||
event = yield self.event_creation_hander.create_and_send_nonmember_event( | |||
requester, | |||
event_dict, | |||
txn_id=txn_id, | |||
@@ -670,6 +672,7 @@ class RoomRedactEventRestServlet(ClientV1RestServlet): | |||
def __init__(self, hs): | |||
super(RoomRedactEventRestServlet, self).__init__(hs) | |||
self.handlers = hs.get_handlers() | |||
self.event_creation_handler = hs.get_event_creation_handler() | |||
def register(self, http_server): | |||
PATTERNS = ("/rooms/(?P<room_id>[^/]*)/redact/(?P<event_id>[^/]*)") | |||
@@ -680,8 +683,7 @@ class RoomRedactEventRestServlet(ClientV1RestServlet): | |||
requester = yield self.auth.get_user_by_req(request) | |||
content = parse_json_object_from_request(request) | |||
msg_handler = self.handlers.message_handler | |||
event = yield msg_handler.create_and_send_nonmember_event( | |||
event = yield self.event_creation_handler.create_and_send_nonmember_event( | |||
requester, | |||
{ | |||
"type": EventTypes.Redaction, | |||
@@ -55,6 +55,7 @@ from synapse.handlers.read_marker import ReadMarkerHandler | |||
from synapse.handlers.user_directory import UserDirectoryHandler | |||
from synapse.handlers.groups_local import GroupsLocalHandler | |||
from synapse.handlers.profile import ProfileHandler | |||
from synapse.handlers.message import EventCreationHandler | |||
from synapse.groups.groups_server import GroupsServerHandler | |||
from synapse.groups.attestations import GroupAttestionRenewer, GroupAttestationSigning | |||
from synapse.http.client import SimpleHttpClient, InsecureInterceptableContextFactory | |||
@@ -118,6 +119,7 @@ class HomeServer(object): | |||
'application_service_handler', | |||
'device_message_handler', | |||
'profile_handler', | |||
'event_creation_handler', | |||
'deactivate_account_handler', | |||
'set_password_handler', | |||
'notifier', | |||
@@ -276,6 +278,9 @@ class HomeServer(object): | |||
def build_profile_handler(self): | |||
return ProfileHandler(self) | |||
def build_event_creation_handler(self): | |||
return EventCreationHandler(self) | |||
def build_deactivate_account_handler(self): | |||
return DeactivateAccountHandler(self) | |||