async def _handle_request(self, request, event_id): with Measure(self.clock, "repl_send_event_parse"): content = parse_json_object_from_request(request) event_dict = content["event"] room_ver = KNOWN_ROOM_VERSIONS[content["room_version"]] internal_metadata = content["internal_metadata"] rejected_reason = content["rejected_reason"] event = make_event_from_dict(event_dict, room_ver, internal_metadata, rejected_reason) requester = Requester.deserialize(self.store, content["requester"]) context = EventContext.deserialize(self.storage, content["context"]) ratelimit = content["ratelimit"] extra_users = [ UserID.from_string(u) for u in content["extra_users"] ] if requester.user: request.authenticated_entity = requester.user.to_string() logger.info("Got event to send with ID: %s into room: %s", event.event_id, event.room_id) stream_id = await self.event_creation_handler.persist_and_notify_client_event( requester, event, context, ratelimit=ratelimit, extra_users=extra_users) return 200, {"stream_id": stream_id}
def _handle_request(self, request, event_id): with Measure(self.clock, "repl_send_event_parse"): content = parse_json_object_from_request(request) event_dict = content["event"] internal_metadata = content["internal_metadata"] rejected_reason = content["rejected_reason"] event = FrozenEvent(event_dict, internal_metadata, rejected_reason) requester = Requester.deserialize(self.store, content["requester"]) context = yield EventContext.deserialize(self.store, content["context"]) ratelimit = content["ratelimit"] extra_users = [UserID.from_string(u) for u in content["extra_users"]] if requester.user: request.authenticated_entity = requester.user.to_string() logger.info( "Got event to send with ID: %s into room: %s", event.event_id, event.room_id, ) yield self.event_creation_handler.persist_and_notify_client_event( requester, event, context, ratelimit=ratelimit, extra_users=extra_users, ) defer.returnValue((200, {}))
def _handle_request(self, request, room_id, user_id): content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info("remote_reject_invite: %s out of room: %s", user_id, room_id) try: event = yield self.federation_handler.do_remotely_reject_invite( remote_room_hosts, room_id, user_id ) ret = event.get_pdu_json() except Exception as e: # if we were unable to reject the exception, just mark # it as rejected on our end and plough ahead. # # The 'except' clause is very broad, but we need to # capture everything from DNS failures upwards # logger.warn("Failed to reject invite: %s", e) yield self.store.locally_reject_invite(user_id, room_id) ret = {} defer.returnValue((200, ret))
def on_POST(self, request): content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] room_id = content["room_id"] user_id = content["user_id"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info( "remote_join: %s into room: %s", user_id, room_id, ) yield self.federation_handler.do_invite_join( remote_room_hosts, room_id, user_id, event_content, ) defer.returnValue((200, {}))
async def _handle_request(self, request, invite_event_id): content = parse_json_object_from_request(request) txn_id = content["txn_id"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester # hopefully we're now on the master, so this won't recurse! event_id, stream_id = await self.member_handler.remote_reject_invite( invite_event_id, txn_id, requester, event_content, ) return 200, {"event_id": event_id, "stream_id": stream_id}
async def _handle_request(self, request, room_id, user_id): content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info("remote_join: %s into room: %s", user_id, room_id) event_id, stream_id = await self.federation_handler.do_invite_join( remote_room_hosts, room_id, user_id, event_content) return 200, {"event_id": event_id, "stream_id": stream_id}
async def _handle_request( # type: ignore self, request: SynapseRequest, room_id: str, user_id: str) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester logger.info("remote_join: %s into room: %s", user_id, room_id) event_id, stream_id = await self.federation_handler.do_invite_join( remote_room_hosts, room_id, user_id, event_content) return 200, {"event_id": event_id, "stream_id": stream_id}
def _handle_request(self, request): content = parse_json_object_from_request(request) medium = content["medium"] address = content["address"] inviter_user_id = content["inviter_user_id"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info("get_or_register_3pid_guest: %r", content) ret = yield self.registeration_handler.get_or_register_3pid_guest( medium, address, inviter_user_id) defer.returnValue((200, ret))
def _handle_request(self, request): content = parse_json_object_from_request(request) medium = content["medium"] address = content["address"] inviter_user_id = content["inviter_user_id"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info("get_or_register_3pid_guest: %r", content) ret = yield self.registeration_handler.get_or_register_3pid_guest( medium, address, inviter_user_id, ) defer.returnValue((200, ret))
async def _handle_request( # type: ignore self, request: SynapseRequest, room_id: str, user_id: str, ): content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester logger.debug("remote_knock: %s on room: %s", user_id, room_id) event_id, stream_id = await self.federation_handler.do_knock( remote_room_hosts, room_id, user_id, event_content) return 200, {"event_id": event_id, "stream_id": stream_id}
async def _handle_request( # type: ignore[override] self, request: Request, event_id: str) -> Tuple[int, JsonDict]: with Measure(self.clock, "repl_send_event_parse"): content = parse_json_object_from_request(request) event_dict = content["event"] room_ver = KNOWN_ROOM_VERSIONS[content["room_version"]] internal_metadata = content["internal_metadata"] rejected_reason = content["rejected_reason"] event = make_event_from_dict(event_dict, room_ver, internal_metadata, rejected_reason) event.internal_metadata.outlier = content["outlier"] requester = Requester.deserialize(self.store, content["requester"]) context = EventContext.deserialize(self._storage_controllers, content["context"]) ratelimit = content["ratelimit"] extra_users = [ UserID.from_string(u) for u in content["extra_users"] ] logger.info("Got event to send with ID: %s into room: %s", event.event_id, event.room_id) event = await self.event_creation_handler.persist_and_notify_client_event( requester, event, context, ratelimit=ratelimit, extra_users=extra_users) return ( 200, { "stream_id": event.internal_metadata.stream_ordering, "event_id": event.event_id, }, )
def on_POST(self, request): content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] room_id = content["room_id"] user_id = content["user_id"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info( "remote_reject_invite: %s out of room: %s", user_id, room_id, ) try: event = yield self.federation_handler.do_remotely_reject_invite( remote_room_hosts, room_id, user_id, ) ret = event.get_pdu_json() except Exception as e: # if we were unable to reject the exception, just mark # it as rejected on our end and plough ahead. # # The 'except' clause is very broad, but we need to # capture everything from DNS failures upwards # logger.warn("Failed to reject invite: %s", e) yield self.store.locally_reject_invite( user_id, room_id ) ret = {} defer.returnValue((200, ret))
async def _handle_request( # type: ignore[override] self, request: SynapseRequest, knock_event_id: str, ) -> Tuple[int, JsonDict]: content = parse_json_object_from_request(request) txn_id = content["txn_id"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) request.requester = requester # hopefully we're now on the master, so this won't recurse! event_id, stream_id = await self.member_handler.remote_rescind_knock( knock_event_id, txn_id, requester, event_content, ) return 200, {"event_id": event_id, "stream_id": stream_id}
async def _handle_request(self, request, room_id, user_id): content = parse_json_object_from_request(request) remote_room_hosts = content["remote_room_hosts"] event_content = content["content"] requester = Requester.deserialize(self.store, content["requester"]) if requester.user: request.authenticated_entity = requester.user.to_string() logger.info("remote_reject_invite: %s out of room: %s", user_id, room_id) try: event, stream_id = await self.federation_handler.do_remotely_reject_invite( remote_room_hosts, room_id, user_id, event_content, ) event_id = event.event_id except Exception as e: # if we were unable to reject the exception, just mark # it as rejected on our end and plough ahead. # # The 'except' clause is very broad, but we need to # capture everything from DNS failures upwards # logger.warning("Failed to reject invite: %s", e) stream_id = await self.member_handler.locally_reject_invite( user_id, room_id) event_id = None return 200, {"event_id": event_id, "stream_id": stream_id}