diff --git a/synapse/api/constants.py b/synapse/api/constants.py
index 4a0552e7e5..f03fdd6dae 100644
--- a/synapse/api/constants.py
+++ b/synapse/api/constants.py
@@ -137,7 +137,13 @@ class DeviceKeyAlgorithms:
class EduTypes:
- Presence: Final = "m.presence"
+ PRESENCE: Final = "m.presence"
+ TYPING: Final = "m.typing"
+ RECEIPT: Final = "m.receipt"
+ DEVICE_LIST_UPDATE: Final = "m.device_list_update"
+ SIGNING_KEY_UPDATE: Final = "m.signing_key_update"
+ UNSTABLE_SIGNING_KEY_UPDATE: Final = "org.matrix.signing_key_update"
+ DIRECT_TO_DEVICE: Final = "m.direct_to_device"
class RejectedReason:
diff --git a/synapse/api/filtering.py b/synapse/api/filtering.py
index b91ce06de7..b007147519 100644
--- a/synapse/api/filtering.py
+++ b/synapse/api/filtering.py
@@ -33,7 +33,7 @@ from typing import (
import jsonschema
from jsonschema import FormatChecker
-from synapse.api.constants import EventContentFields
+from synapse.api.constants import EduTypes, EventContentFields
from synapse.api.errors import SynapseError
from synapse.api.presence import UserPresenceState
from synapse.events import EventBase
@@ -347,7 +347,7 @@ class Filter:
user_id = event.user_id
field_matchers = {
"senders": lambda v: user_id == v,
- "types": lambda v: "m.presence" == v,
+ "types": lambda v: EduTypes.PRESENCE == v,
}
return self._check_fields(field_matchers)
else:
diff --git a/synapse/federation/federation_server.py b/synapse/federation/federation_server.py
index b8232e5257..5b227b85fd 100644
--- a/synapse/federation/federation_server.py
+++ b/synapse/federation/federation_server.py
@@ -1353,7 +1353,7 @@ class FederationHandlerRegistry:
self._edu_type_to_instance[edu_type] = instance_names
async def on_edu(self, edu_type: str, origin: str, content: dict) -> None:
- if not self.config.server.use_presence and edu_type == EduTypes.Presence:
+ if not self.config.server.use_presence and edu_type == EduTypes.PRESENCE:
return
# Check if we have a handler on this instance
diff --git a/synapse/federation/sender/per_destination_queue.py b/synapse/federation/sender/per_destination_queue.py
index 8983b5a53d..333ca9a97f 100644
--- a/synapse/federation/sender/per_destination_queue.py
+++ b/synapse/federation/sender/per_destination_queue.py
@@ -21,6 +21,7 @@ from typing import TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Tupl
import attr
from prometheus_client import Counter
+from synapse.api.constants import EduTypes
from synapse.api.errors import (
FederationDeniedError,
HttpResponseException,
@@ -542,7 +543,7 @@ class PerDestinationQueue:
edu = Edu(
origin=self._server_name,
destination=self._destination,
- edu_type="m.receipt",
+ edu_type=EduTypes.RECEIPT,
content=self._pending_rrs,
)
self._pending_rrs = {}
@@ -592,7 +593,7 @@ class PerDestinationQueue:
Edu(
origin=self._server_name,
destination=self._destination,
- edu_type="m.direct_to_device",
+ edu_type=EduTypes.DIRECT_TO_DEVICE,
content=content,
)
for content in contents
@@ -670,7 +671,7 @@ class _TransactionQueueManager:
Edu(
origin=self.queue._server_name,
destination=self.queue._destination,
- edu_type="m.presence",
+ edu_type=EduTypes.PRESENCE,
content={
"push": [
format_user_presence_state(
diff --git a/synapse/federation/sender/transaction_manager.py b/synapse/federation/sender/transaction_manager.py
index 0c1cad86ab..75081810fd 100644
--- a/synapse/federation/sender/transaction_manager.py
+++ b/synapse/federation/sender/transaction_manager.py
@@ -16,6 +16,7 @@ from typing import TYPE_CHECKING, List
from prometheus_client import Gauge
+from synapse.api.constants import EduTypes
from synapse.api.errors import HttpResponseException
from synapse.events import EventBase
from synapse.federation.persistence import TransactionActions
@@ -126,7 +127,10 @@ class TransactionManager:
len(edus),
)
if issue_8631_logger.isEnabledFor(logging.DEBUG):
- DEVICE_UPDATE_EDUS = {"m.device_list_update", "m.signing_key_update"}
+ DEVICE_UPDATE_EDUS = {
+ EduTypes.DEVICE_LIST_UPDATE,
+ EduTypes.SIGNING_KEY_UPDATE,
+ }
device_list_updates = [
edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS
]
diff --git a/synapse/federation/transport/server/federation.py b/synapse/federation/transport/server/federation.py
index 57e8fb21b0..7dfb890661 100644
--- a/synapse/federation/transport/server/federation.py
+++ b/synapse/federation/transport/server/federation.py
@@ -27,6 +27,7 @@ from typing import (
from matrix_common.versionstring import get_distribution_version_string
from typing_extensions import Literal
+from synapse.api.constants import EduTypes
from synapse.api.errors import Codes, SynapseError
from synapse.api.room_versions import RoomVersions
from synapse.api.urls import FEDERATION_UNSTABLE_PREFIX, FEDERATION_V2_PREFIX
@@ -108,7 +109,10 @@ class FederationSendServlet(BaseFederationServerServlet):
)
if issue_8631_logger.isEnabledFor(logging.DEBUG):
- DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"]
+ DEVICE_UPDATE_EDUS = [
+ EduTypes.DEVICE_LIST_UPDATE,
+ EduTypes.SIGNING_KEY_UPDATE,
+ ]
device_list_updates = [
edu.get("content", {})
for edu in transaction_data.get("edus", [])
diff --git a/synapse/handlers/appservice.py b/synapse/handlers/appservice.py
index 1da7bcc85b..814553e098 100644
--- a/synapse/handlers/appservice.py
+++ b/synapse/handlers/appservice.py
@@ -19,7 +19,7 @@ from prometheus_client import Counter
from twisted.internet import defer
import synapse
-from synapse.api.constants import EventTypes
+from synapse.api.constants import EduTypes, EventTypes
from synapse.appservice import ApplicationService
from synapse.events import EventBase
from synapse.handlers.presence import format_user_presence_state
@@ -503,7 +503,7 @@ class ApplicationServicesHandler:
time_now = self.clock.time_msec()
events.extend(
{
- "type": "m.presence",
+ "type": EduTypes.PRESENCE,
"sender": event.user_id,
"content": format_user_presence_state(
event, time_now, include_user_id=False
diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py
index b21e469865..438a549339 100644
--- a/synapse/handlers/device.py
+++ b/synapse/handlers/device.py
@@ -28,7 +28,7 @@ from typing import (
)
from synapse.api import errors
-from synapse.api.constants import EventTypes
+from synapse.api.constants import EduTypes, EventTypes
from synapse.api.errors import (
Codes,
FederationDeniedError,
@@ -279,7 +279,8 @@ class DeviceHandler(DeviceWorkerHandler):
federation_registry = hs.get_federation_registry()
federation_registry.register_edu_handler(
- "m.device_list_update", self.device_list_updater.incoming_device_list_update
+ EduTypes.DEVICE_LIST_UPDATE,
+ self.device_list_updater.incoming_device_list_update,
)
hs.get_distributor().observe("user_left_room", self.user_left_room)
diff --git a/synapse/handlers/devicemessage.py b/synapse/handlers/devicemessage.py
index 53668cce3b..444c08bc2e 100644
--- a/synapse/handlers/devicemessage.py
+++ b/synapse/handlers/devicemessage.py
@@ -15,7 +15,7 @@
import logging
from typing import TYPE_CHECKING, Any, Dict
-from synapse.api.constants import ToDeviceEventTypes
+from synapse.api.constants import EduTypes, ToDeviceEventTypes
from synapse.api.errors import SynapseError
from synapse.api.ratelimiting import Ratelimiter
from synapse.logging.context import run_in_background
@@ -59,11 +59,11 @@ class DeviceMessageHandler:
# to the appropriate worker.
if hs.get_instance_name() in hs.config.worker.writers.to_device:
hs.get_federation_registry().register_edu_handler(
- "m.direct_to_device", self.on_direct_to_device_edu
+ EduTypes.DIRECT_TO_DEVICE, self.on_direct_to_device_edu
)
else:
hs.get_federation_registry().register_instances_for_edu(
- "m.direct_to_device",
+ EduTypes.DIRECT_TO_DEVICE,
hs.config.worker.writers.to_device,
)
diff --git a/synapse/handlers/e2e_keys.py b/synapse/handlers/e2e_keys.py
index e6c2cfb8c8..52bb5c9c55 100644
--- a/synapse/handlers/e2e_keys.py
+++ b/synapse/handlers/e2e_keys.py
@@ -25,6 +25,7 @@ from unpaddedbase64 import decode_base64
from twisted.internet import defer
+from synapse.api.constants import EduTypes
from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError
from synapse.logging.context import make_deferred_yieldable, run_in_background
from synapse.logging.opentracing import log_kv, set_tag, tag_args, trace
@@ -66,13 +67,13 @@ class E2eKeysHandler:
# Only register this edu handler on master as it requires writing
# device updates to the db
federation_registry.register_edu_handler(
- "m.signing_key_update",
+ EduTypes.SIGNING_KEY_UPDATE,
self._edu_updater.incoming_signing_key_update,
)
# also handle the unstable version
# FIXME: remove this when enough servers have upgraded
federation_registry.register_edu_handler(
- "org.matrix.signing_key_update",
+ EduTypes.UNSTABLE_SIGNING_KEY_UPDATE,
self._edu_updater.incoming_signing_key_update,
)
diff --git a/synapse/handlers/events.py b/synapse/handlers/events.py
index 82a5aac3dd..cb7e0ca7a8 100644
--- a/synapse/handlers/events.py
+++ b/synapse/handlers/events.py
@@ -113,7 +113,7 @@ class EventStreamHandler:
states = await presence_handler.get_states(users)
to_add.extend(
{
- "type": EduTypes.Presence,
+ "type": EduTypes.PRESENCE,
"content": format_user_presence_state(state, time_now),
}
for state in states
diff --git a/synapse/handlers/initial_sync.py b/synapse/handlers/initial_sync.py
index c06932a41a..fbdbeeedfd 100644
--- a/synapse/handlers/initial_sync.py
+++ b/synapse/handlers/initial_sync.py
@@ -274,7 +274,7 @@ class InitialSyncHandler:
"rooms": rooms_ret,
"presence": [
{
- "type": "m.presence",
+ "type": EduTypes.PRESENCE,
"content": format_user_presence_state(event, now),
}
for event in presence
@@ -439,7 +439,7 @@ class InitialSyncHandler:
return [
{
- "type": EduTypes.Presence,
+ "type": EduTypes.PRESENCE,
"content": format_user_presence_state(s, time_now),
}
for s in states
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py
index dd84e6c88b..bf112b9e1e 100644
--- a/synapse/handlers/presence.py
+++ b/synapse/handlers/presence.py
@@ -49,7 +49,7 @@ from prometheus_client import Counter
from typing_extensions import ContextManager
import synapse.metrics
-from synapse.api.constants import EventTypes, Membership, PresenceState
+from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState
from synapse.api.errors import SynapseError
from synapse.api.presence import UserPresenceState
from synapse.appservice import ApplicationService
@@ -394,7 +394,7 @@ class WorkerPresenceHandler(BasePresenceHandler):
# Route presence EDUs to the right worker
hs.get_federation_registry().register_instances_for_edu(
- "m.presence",
+ EduTypes.PRESENCE,
hs.config.worker.writers.presence,
)
@@ -649,7 +649,9 @@ class PresenceHandler(BasePresenceHandler):
federation_registry = hs.get_federation_registry()
- federation_registry.register_edu_handler("m.presence", self.incoming_presence)
+ federation_registry.register_edu_handler(
+ EduTypes.PRESENCE, self.incoming_presence
+ )
LaterGauge(
"synapse_handlers_presence_user_to_current_state_size",
diff --git a/synapse/handlers/receipts.py b/synapse/handlers/receipts.py
index e6a35f1d09..43d2882b0a 100644
--- a/synapse/handlers/receipts.py
+++ b/synapse/handlers/receipts.py
@@ -14,7 +14,7 @@
import logging
from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple
-from synapse.api.constants import ReceiptTypes
+from synapse.api.constants import EduTypes, ReceiptTypes
from synapse.appservice import ApplicationService
from synapse.streams import EventSource
from synapse.types import (
@@ -52,11 +52,11 @@ class ReceiptsHandler:
# to the appropriate worker.
if hs.get_instance_name() in hs.config.worker.writers.receipts:
hs.get_federation_registry().register_edu_handler(
- "m.receipt", self._received_remote_receipt
+ EduTypes.RECEIPT, self._received_remote_receipt
)
else:
hs.get_federation_registry().register_instances_for_edu(
- "m.receipt",
+ EduTypes.RECEIPT,
hs.config.worker.writers.receipts,
)
diff --git a/synapse/handlers/typing.py b/synapse/handlers/typing.py
index bb00750bfd..0aeab86bbb 100644
--- a/synapse/handlers/typing.py
+++ b/synapse/handlers/typing.py
@@ -17,6 +17,7 @@ from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple
import attr
+from synapse.api.constants import EduTypes
from synapse.api.errors import AuthError, ShadowBanError, SynapseError
from synapse.appservice import ApplicationService
from synapse.metrics.background_process_metrics import (
@@ -68,7 +69,7 @@ class FollowerTypingHandler:
if hs.get_instance_name() not in hs.config.worker.writers.typing:
hs.get_federation_registry().register_instances_for_edu(
- "m.typing",
+ EduTypes.TYPING,
hs.config.worker.writers.typing,
)
@@ -143,7 +144,7 @@ class FollowerTypingHandler:
logger.debug("sending typing update to %s", domain)
self.federation.build_and_send_edu(
destination=domain,
- edu_type="m.typing",
+ edu_type=EduTypes.TYPING,
content={
"room_id": member.room_id,
"user_id": member.user_id,
@@ -218,7 +219,9 @@ class TypingWriterHandler(FollowerTypingHandler):
self.hs = hs
- hs.get_federation_registry().register_edu_handler("m.typing", self._recv_edu)
+ hs.get_federation_registry().register_edu_handler(
+ EduTypes.TYPING, self._recv_edu
+ )
hs.get_distributor().observe("user_left_room", self.user_left_room)
@@ -458,7 +461,7 @@ class TypingNotificationEventSource(EventSource[int, JsonDict]):
def _make_event_for(self, room_id: str) -> JsonDict:
typing = self.get_typing_handler()._room_typing[room_id]
return {
- "type": "m.typing",
+ "type": EduTypes.TYPING,
"room_id": room_id,
"content": {"user_ids": list(typing)},
}
diff --git a/synapse/notifier.py b/synapse/notifier.py
index ba23257f54..c2b66eec62 100644
--- a/synapse/notifier.py
+++ b/synapse/notifier.py
@@ -33,7 +33,7 @@ from prometheus_client import Counter
from twisted.internet import defer
-from synapse.api.constants import EventTypes, HistoryVisibility, Membership
+from synapse.api.constants import EduTypes, EventTypes, HistoryVisibility, Membership
from synapse.api.errors import AuthError
from synapse.events import EventBase
from synapse.handlers.presence import format_user_presence_state
@@ -632,7 +632,7 @@ class Notifier:
now = self.clock.time_msec()
new_events[:] = [
{
- "type": "m.presence",
+ "type": EduTypes.PRESENCE,
"content": format_user_presence_state(event, now),
}
for event in new_events
diff --git a/synapse/rest/client/sync.py b/synapse/rest/client/sync.py
index f596b792fa..8bbf35148d 100644
--- a/synapse/rest/client/sync.py
+++ b/synapse/rest/client/sync.py
@@ -16,7 +16,7 @@ import logging
from collections import defaultdict
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
-from synapse.api.constants import Membership, PresenceState
+from synapse.api.constants import EduTypes, Membership, PresenceState
from synapse.api.errors import Codes, StoreError, SynapseError
from synapse.api.filtering import FilterCollection
from synapse.api.presence import UserPresenceState
@@ -305,7 +305,7 @@ class SyncRestServlet(RestServlet):
return {
"events": [
{
- "type": "m.presence",
+ "type": EduTypes.PRESENCE,
"sender": event.user_id,
"content": format_user_presence_state(
event, time_now, include_user_id=False
diff --git a/synapse/storage/databases/main/devices.py b/synapse/storage/databases/main/devices.py
index 2df4dd4ed4..dd43bae784 100644
--- a/synapse/storage/databases/main/devices.py
+++ b/synapse/storage/databases/main/devices.py
@@ -28,6 +28,7 @@ from typing import (
cast,
)
+from synapse.api.constants import EduTypes
from synapse.api.errors import Codes, StoreError
from synapse.logging.opentracing import (
get_active_span_text_map,
@@ -419,7 +420,7 @@ class DeviceWorkerStore(SQLBaseStore):
# Add the updated cross-signing keys to the results list
for user_id, result in cross_signing_keys_by_user.items():
result["user_id"] = user_id
- results.append(("m.signing_key_update", result))
+ results.append((EduTypes.SIGNING_KEY_UPDATE, result))
# also send the unstable version
# FIXME: remove this when enough servers have upgraded
# and remove the length budgeting above.
@@ -545,7 +546,7 @@ class DeviceWorkerStore(SQLBaseStore):
else:
result["deleted"] = True
- results.append(("m.device_list_update", result))
+ results.append((EduTypes.DEVICE_LIST_UPDATE, result))
return results
diff --git a/synapse/storage/databases/main/receipts.py b/synapse/storage/databases/main/receipts.py
index cfa4d4924d..f74aa1e3f3 100644
--- a/synapse/storage/databases/main/receipts.py
+++ b/synapse/storage/databases/main/receipts.py
@@ -26,7 +26,7 @@ from typing import (
cast,
)
-from synapse.api.constants import ReceiptTypes
+from synapse.api.constants import EduTypes, ReceiptTypes
from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker
from synapse.replication.tcp.streams import ReceiptsStream
from synapse.storage._base import SQLBaseStore, db_to_json, make_in_list_sql_clause
@@ -363,7 +363,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
row["user_id"]
] = db_to_json(row["data"])
- return [{"type": "m.receipt", "room_id": room_id, "content": content}]
+ return [{"type": EduTypes.RECEIPT, "room_id": room_id, "content": content}]
@cachedList(
cached_method_name="_get_linearized_receipts_for_room",
@@ -411,7 +411,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
# receipts by room, event and type.
room_event = results.setdefault(
row["room_id"],
- {"type": "m.receipt", "room_id": row["room_id"], "content": {}},
+ {"type": EduTypes.RECEIPT, "room_id": row["room_id"], "content": {}},
)
# The content is of the form:
@@ -476,7 +476,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
# receipts by room, event and type.
room_event = results.setdefault(
row["room_id"],
- {"type": "m.receipt", "room_id": row["room_id"], "content": {}},
+ {"type": EduTypes.RECEIPT, "room_id": row["room_id"], "content": {}},
)
# The content is of the form:
|