Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit c52abc1

Browse files
authored
Additional constants for EDU types. (#12884)
Instead of hard-coding strings in many places.
1 parent d9f0922 commit c52abc1

35 files changed

+146
-96
lines changed

changelog.d/12884.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Use constants for EDU types.

synapse/api/constants.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,13 @@ class DeviceKeyAlgorithms:
137137

138138

139139
class EduTypes:
140-
Presence: Final = "m.presence"
140+
PRESENCE: Final = "m.presence"
141+
TYPING: Final = "m.typing"
142+
RECEIPT: Final = "m.receipt"
143+
DEVICE_LIST_UPDATE: Final = "m.device_list_update"
144+
SIGNING_KEY_UPDATE: Final = "m.signing_key_update"
145+
UNSTABLE_SIGNING_KEY_UPDATE: Final = "org.matrix.signing_key_update"
146+
DIRECT_TO_DEVICE: Final = "m.direct_to_device"
141147

142148

143149
class RejectedReason:

synapse/api/filtering.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import jsonschema
3434
from jsonschema import FormatChecker
3535

36-
from synapse.api.constants import EventContentFields
36+
from synapse.api.constants import EduTypes, EventContentFields
3737
from synapse.api.errors import SynapseError
3838
from synapse.api.presence import UserPresenceState
3939
from synapse.events import EventBase
@@ -347,7 +347,7 @@ def _check(self, event: FilterEvent) -> bool:
347347
user_id = event.user_id
348348
field_matchers = {
349349
"senders": lambda v: user_id == v,
350-
"types": lambda v: "m.presence" == v,
350+
"types": lambda v: EduTypes.PRESENCE == v,
351351
}
352352
return self._check_fields(field_matchers)
353353
else:

synapse/federation/federation_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1353,7 +1353,7 @@ def register_instances_for_edu(
13531353
self._edu_type_to_instance[edu_type] = instance_names
13541354

13551355
async def on_edu(self, edu_type: str, origin: str, content: dict) -> None:
1356-
if not self.config.server.use_presence and edu_type == EduTypes.Presence:
1356+
if not self.config.server.use_presence and edu_type == EduTypes.PRESENCE:
13571357
return
13581358

13591359
# Check if we have a handler on this instance

synapse/federation/sender/per_destination_queue.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import attr
2222
from prometheus_client import Counter
2323

24+
from synapse.api.constants import EduTypes
2425
from synapse.api.errors import (
2526
FederationDeniedError,
2627
HttpResponseException,
@@ -542,7 +543,7 @@ def _get_rr_edus(self, force_flush: bool) -> Iterable[Edu]:
542543
edu = Edu(
543544
origin=self._server_name,
544545
destination=self._destination,
545-
edu_type="m.receipt",
546+
edu_type=EduTypes.RECEIPT,
546547
content=self._pending_rrs,
547548
)
548549
self._pending_rrs = {}
@@ -592,7 +593,7 @@ async def _get_to_device_message_edus(self, limit: int) -> Tuple[List[Edu], int]
592593
Edu(
593594
origin=self._server_name,
594595
destination=self._destination,
595-
edu_type="m.direct_to_device",
596+
edu_type=EduTypes.DIRECT_TO_DEVICE,
596597
content=content,
597598
)
598599
for content in contents
@@ -670,7 +671,7 @@ async def __aenter__(self) -> Tuple[List[EventBase], List[Edu]]:
670671
Edu(
671672
origin=self.queue._server_name,
672673
destination=self.queue._destination,
673-
edu_type="m.presence",
674+
edu_type=EduTypes.PRESENCE,
674675
content={
675676
"push": [
676677
format_user_presence_state(

synapse/federation/sender/transaction_manager.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from prometheus_client import Gauge
1818

19+
from synapse.api.constants import EduTypes
1920
from synapse.api.errors import HttpResponseException
2021
from synapse.events import EventBase
2122
from synapse.federation.persistence import TransactionActions
@@ -126,7 +127,10 @@ async def send_new_transaction(
126127
len(edus),
127128
)
128129
if issue_8631_logger.isEnabledFor(logging.DEBUG):
129-
DEVICE_UPDATE_EDUS = {"m.device_list_update", "m.signing_key_update"}
130+
DEVICE_UPDATE_EDUS = {
131+
EduTypes.DEVICE_LIST_UPDATE,
132+
EduTypes.SIGNING_KEY_UPDATE,
133+
}
130134
device_list_updates = [
131135
edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS
132136
]

synapse/federation/transport/server/federation.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from matrix_common.versionstring import get_distribution_version_string
2828
from typing_extensions import Literal
2929

30+
from synapse.api.constants import EduTypes
3031
from synapse.api.errors import Codes, SynapseError
3132
from synapse.api.room_versions import RoomVersions
3233
from synapse.api.urls import FEDERATION_UNSTABLE_PREFIX, FEDERATION_V2_PREFIX
@@ -108,7 +109,10 @@ async def on_PUT(
108109
)
109110

110111
if issue_8631_logger.isEnabledFor(logging.DEBUG):
111-
DEVICE_UPDATE_EDUS = ["m.device_list_update", "m.signing_key_update"]
112+
DEVICE_UPDATE_EDUS = [
113+
EduTypes.DEVICE_LIST_UPDATE,
114+
EduTypes.SIGNING_KEY_UPDATE,
115+
]
112116
device_list_updates = [
113117
edu.get("content", {})
114118
for edu in transaction_data.get("edus", [])

synapse/handlers/appservice.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from twisted.internet import defer
2020

2121
import synapse
22-
from synapse.api.constants import EventTypes
22+
from synapse.api.constants import EduTypes, EventTypes
2323
from synapse.appservice import ApplicationService
2424
from synapse.events import EventBase
2525
from synapse.handlers.presence import format_user_presence_state
@@ -503,7 +503,7 @@ async def _handle_presence(
503503
time_now = self.clock.time_msec()
504504
events.extend(
505505
{
506-
"type": "m.presence",
506+
"type": EduTypes.PRESENCE,
507507
"sender": event.user_id,
508508
"content": format_user_presence_state(
509509
event, time_now, include_user_id=False

synapse/handlers/device.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
)
2929

3030
from synapse.api import errors
31-
from synapse.api.constants import EventTypes
31+
from synapse.api.constants import EduTypes, EventTypes
3232
from synapse.api.errors import (
3333
Codes,
3434
FederationDeniedError,
@@ -279,7 +279,8 @@ def __init__(self, hs: "HomeServer"):
279279
federation_registry = hs.get_federation_registry()
280280

281281
federation_registry.register_edu_handler(
282-
"m.device_list_update", self.device_list_updater.incoming_device_list_update
282+
EduTypes.DEVICE_LIST_UPDATE,
283+
self.device_list_updater.incoming_device_list_update,
283284
)
284285

285286
hs.get_distributor().observe("user_left_room", self.user_left_room)

synapse/handlers/devicemessage.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import logging
1616
from typing import TYPE_CHECKING, Any, Dict
1717

18-
from synapse.api.constants import ToDeviceEventTypes
18+
from synapse.api.constants import EduTypes, ToDeviceEventTypes
1919
from synapse.api.errors import SynapseError
2020
from synapse.api.ratelimiting import Ratelimiter
2121
from synapse.logging.context import run_in_background
@@ -59,11 +59,11 @@ def __init__(self, hs: "HomeServer"):
5959
# to the appropriate worker.
6060
if hs.get_instance_name() in hs.config.worker.writers.to_device:
6161
hs.get_federation_registry().register_edu_handler(
62-
"m.direct_to_device", self.on_direct_to_device_edu
62+
EduTypes.DIRECT_TO_DEVICE, self.on_direct_to_device_edu
6363
)
6464
else:
6565
hs.get_federation_registry().register_instances_for_edu(
66-
"m.direct_to_device",
66+
EduTypes.DIRECT_TO_DEVICE,
6767
hs.config.worker.writers.to_device,
6868
)
6969

synapse/handlers/e2e_keys.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
from twisted.internet import defer
2727

28+
from synapse.api.constants import EduTypes
2829
from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError
2930
from synapse.logging.context import make_deferred_yieldable, run_in_background
3031
from synapse.logging.opentracing import log_kv, set_tag, tag_args, trace
@@ -66,13 +67,13 @@ def __init__(self, hs: "HomeServer"):
6667
# Only register this edu handler on master as it requires writing
6768
# device updates to the db
6869
federation_registry.register_edu_handler(
69-
"m.signing_key_update",
70+
EduTypes.SIGNING_KEY_UPDATE,
7071
self._edu_updater.incoming_signing_key_update,
7172
)
7273
# also handle the unstable version
7374
# FIXME: remove this when enough servers have upgraded
7475
federation_registry.register_edu_handler(
75-
"org.matrix.signing_key_update",
76+
EduTypes.UNSTABLE_SIGNING_KEY_UPDATE,
7677
self._edu_updater.incoming_signing_key_update,
7778
)
7879

synapse/handlers/events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ async def get_stream(
113113
states = await presence_handler.get_states(users)
114114
to_add.extend(
115115
{
116-
"type": EduTypes.Presence,
116+
"type": EduTypes.PRESENCE,
117117
"content": format_user_presence_state(state, time_now),
118118
}
119119
for state in states

synapse/handlers/initial_sync.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ async def handle_room(event: RoomsForUser) -> None:
274274
"rooms": rooms_ret,
275275
"presence": [
276276
{
277-
"type": "m.presence",
277+
"type": EduTypes.PRESENCE,
278278
"content": format_user_presence_state(event, now),
279279
}
280280
for event in presence
@@ -439,7 +439,7 @@ async def get_presence() -> List[JsonDict]:
439439

440440
return [
441441
{
442-
"type": EduTypes.Presence,
442+
"type": EduTypes.PRESENCE,
443443
"content": format_user_presence_state(s, time_now),
444444
}
445445
for s in states

synapse/handlers/presence.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
from typing_extensions import ContextManager
5050

5151
import synapse.metrics
52-
from synapse.api.constants import EventTypes, Membership, PresenceState
52+
from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState
5353
from synapse.api.errors import SynapseError
5454
from synapse.api.presence import UserPresenceState
5555
from synapse.appservice import ApplicationService
@@ -394,7 +394,7 @@ def __init__(self, hs: "HomeServer"):
394394

395395
# Route presence EDUs to the right worker
396396
hs.get_federation_registry().register_instances_for_edu(
397-
"m.presence",
397+
EduTypes.PRESENCE,
398398
hs.config.worker.writers.presence,
399399
)
400400

@@ -649,7 +649,9 @@ def __init__(self, hs: "HomeServer"):
649649

650650
federation_registry = hs.get_federation_registry()
651651

652-
federation_registry.register_edu_handler("m.presence", self.incoming_presence)
652+
federation_registry.register_edu_handler(
653+
EduTypes.PRESENCE, self.incoming_presence
654+
)
653655

654656
LaterGauge(
655657
"synapse_handlers_presence_user_to_current_state_size",

synapse/handlers/receipts.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import logging
1515
from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple
1616

17-
from synapse.api.constants import ReceiptTypes
17+
from synapse.api.constants import EduTypes, ReceiptTypes
1818
from synapse.appservice import ApplicationService
1919
from synapse.streams import EventSource
2020
from synapse.types import (
@@ -52,11 +52,11 @@ def __init__(self, hs: "HomeServer"):
5252
# to the appropriate worker.
5353
if hs.get_instance_name() in hs.config.worker.writers.receipts:
5454
hs.get_federation_registry().register_edu_handler(
55-
"m.receipt", self._received_remote_receipt
55+
EduTypes.RECEIPT, self._received_remote_receipt
5656
)
5757
else:
5858
hs.get_federation_registry().register_instances_for_edu(
59-
"m.receipt",
59+
EduTypes.RECEIPT,
6060
hs.config.worker.writers.receipts,
6161
)
6262

synapse/handlers/typing.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import attr
1919

20+
from synapse.api.constants import EduTypes
2021
from synapse.api.errors import AuthError, ShadowBanError, SynapseError
2122
from synapse.appservice import ApplicationService
2223
from synapse.metrics.background_process_metrics import (
@@ -68,7 +69,7 @@ def __init__(self, hs: "HomeServer"):
6869

6970
if hs.get_instance_name() not in hs.config.worker.writers.typing:
7071
hs.get_federation_registry().register_instances_for_edu(
71-
"m.typing",
72+
EduTypes.TYPING,
7273
hs.config.worker.writers.typing,
7374
)
7475

@@ -143,7 +144,7 @@ async def _push_remote(self, member: RoomMember, typing: bool) -> None:
143144
logger.debug("sending typing update to %s", domain)
144145
self.federation.build_and_send_edu(
145146
destination=domain,
146-
edu_type="m.typing",
147+
edu_type=EduTypes.TYPING,
147148
content={
148149
"room_id": member.room_id,
149150
"user_id": member.user_id,
@@ -218,7 +219,9 @@ def __init__(self, hs: "HomeServer"):
218219

219220
self.hs = hs
220221

221-
hs.get_federation_registry().register_edu_handler("m.typing", self._recv_edu)
222+
hs.get_federation_registry().register_edu_handler(
223+
EduTypes.TYPING, self._recv_edu
224+
)
222225

223226
hs.get_distributor().observe("user_left_room", self.user_left_room)
224227

@@ -458,7 +461,7 @@ def __init__(self, hs: "HomeServer"):
458461
def _make_event_for(self, room_id: str) -> JsonDict:
459462
typing = self.get_typing_handler()._room_typing[room_id]
460463
return {
461-
"type": "m.typing",
464+
"type": EduTypes.TYPING,
462465
"room_id": room_id,
463466
"content": {"user_ids": list(typing)},
464467
}

synapse/notifier.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
from twisted.internet import defer
3535

36-
from synapse.api.constants import EventTypes, HistoryVisibility, Membership
36+
from synapse.api.constants import EduTypes, EventTypes, HistoryVisibility, Membership
3737
from synapse.api.errors import AuthError
3838
from synapse.events import EventBase
3939
from synapse.handlers.presence import format_user_presence_state
@@ -632,7 +632,7 @@ async def check_for_updates(
632632
now = self.clock.time_msec()
633633
new_events[:] = [
634634
{
635-
"type": "m.presence",
635+
"type": EduTypes.PRESENCE,
636636
"content": format_user_presence_state(event, now),
637637
}
638638
for event in new_events

synapse/rest/client/sync.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from collections import defaultdict
1717
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
1818

19-
from synapse.api.constants import Membership, PresenceState
19+
from synapse.api.constants import EduTypes, Membership, PresenceState
2020
from synapse.api.errors import Codes, StoreError, SynapseError
2121
from synapse.api.filtering import FilterCollection
2222
from synapse.api.presence import UserPresenceState
@@ -305,7 +305,7 @@ def encode_presence(events: List[UserPresenceState], time_now: int) -> JsonDict:
305305
return {
306306
"events": [
307307
{
308-
"type": "m.presence",
308+
"type": EduTypes.PRESENCE,
309309
"sender": event.user_id,
310310
"content": format_user_presence_state(
311311
event, time_now, include_user_id=False

synapse/storage/databases/main/devices.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
cast,
2929
)
3030

31+
from synapse.api.constants import EduTypes
3132
from synapse.api.errors import Codes, StoreError
3233
from synapse.logging.opentracing import (
3334
get_active_span_text_map,
@@ -419,7 +420,7 @@ async def get_device_updates_by_remote(
419420
# Add the updated cross-signing keys to the results list
420421
for user_id, result in cross_signing_keys_by_user.items():
421422
result["user_id"] = user_id
422-
results.append(("m.signing_key_update", result))
423+
results.append((EduTypes.SIGNING_KEY_UPDATE, result))
423424
# also send the unstable version
424425
# FIXME: remove this when enough servers have upgraded
425426
# and remove the length budgeting above.
@@ -545,7 +546,7 @@ async def _get_device_update_edus_by_remote(
545546
else:
546547
result["deleted"] = True
547548

548-
results.append(("m.device_list_update", result))
549+
results.append((EduTypes.DEVICE_LIST_UPDATE, result))
549550

550551
return results
551552

0 commit comments

Comments
 (0)