mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-22 01:25:44 +03:00
Additional constants for EDU types. (#12884)
Instead of hard-coding strings in many places.
This commit is contained in:
parent
d9f092285b
commit
c52abc1cfd
35 changed files with 146 additions and 96 deletions
1
changelog.d/12884.misc
Normal file
1
changelog.d/12884.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Use constants for EDU types.
|
|
@ -137,7 +137,13 @@ class DeviceKeyAlgorithms:
|
||||||
|
|
||||||
|
|
||||||
class EduTypes:
|
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:
|
class RejectedReason:
|
||||||
|
|
|
@ -33,7 +33,7 @@ from typing import (
|
||||||
import jsonschema
|
import jsonschema
|
||||||
from jsonschema import FormatChecker
|
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.errors import SynapseError
|
||||||
from synapse.api.presence import UserPresenceState
|
from synapse.api.presence import UserPresenceState
|
||||||
from synapse.events import EventBase
|
from synapse.events import EventBase
|
||||||
|
@ -347,7 +347,7 @@ class Filter:
|
||||||
user_id = event.user_id
|
user_id = event.user_id
|
||||||
field_matchers = {
|
field_matchers = {
|
||||||
"senders": lambda v: user_id == v,
|
"senders": lambda v: user_id == v,
|
||||||
"types": lambda v: "m.presence" == v,
|
"types": lambda v: EduTypes.PRESENCE == v,
|
||||||
}
|
}
|
||||||
return self._check_fields(field_matchers)
|
return self._check_fields(field_matchers)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1353,7 +1353,7 @@ class FederationHandlerRegistry:
|
||||||
self._edu_type_to_instance[edu_type] = instance_names
|
self._edu_type_to_instance[edu_type] = instance_names
|
||||||
|
|
||||||
async def on_edu(self, edu_type: str, origin: str, content: dict) -> None:
|
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
|
return
|
||||||
|
|
||||||
# Check if we have a handler on this instance
|
# Check if we have a handler on this instance
|
||||||
|
|
|
@ -21,6 +21,7 @@ from typing import TYPE_CHECKING, Dict, Hashable, Iterable, List, Optional, Tupl
|
||||||
import attr
|
import attr
|
||||||
from prometheus_client import Counter
|
from prometheus_client import Counter
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import (
|
from synapse.api.errors import (
|
||||||
FederationDeniedError,
|
FederationDeniedError,
|
||||||
HttpResponseException,
|
HttpResponseException,
|
||||||
|
@ -542,7 +543,7 @@ class PerDestinationQueue:
|
||||||
edu = Edu(
|
edu = Edu(
|
||||||
origin=self._server_name,
|
origin=self._server_name,
|
||||||
destination=self._destination,
|
destination=self._destination,
|
||||||
edu_type="m.receipt",
|
edu_type=EduTypes.RECEIPT,
|
||||||
content=self._pending_rrs,
|
content=self._pending_rrs,
|
||||||
)
|
)
|
||||||
self._pending_rrs = {}
|
self._pending_rrs = {}
|
||||||
|
@ -592,7 +593,7 @@ class PerDestinationQueue:
|
||||||
Edu(
|
Edu(
|
||||||
origin=self._server_name,
|
origin=self._server_name,
|
||||||
destination=self._destination,
|
destination=self._destination,
|
||||||
edu_type="m.direct_to_device",
|
edu_type=EduTypes.DIRECT_TO_DEVICE,
|
||||||
content=content,
|
content=content,
|
||||||
)
|
)
|
||||||
for content in contents
|
for content in contents
|
||||||
|
@ -670,7 +671,7 @@ class _TransactionQueueManager:
|
||||||
Edu(
|
Edu(
|
||||||
origin=self.queue._server_name,
|
origin=self.queue._server_name,
|
||||||
destination=self.queue._destination,
|
destination=self.queue._destination,
|
||||||
edu_type="m.presence",
|
edu_type=EduTypes.PRESENCE,
|
||||||
content={
|
content={
|
||||||
"push": [
|
"push": [
|
||||||
format_user_presence_state(
|
format_user_presence_state(
|
||||||
|
|
|
@ -16,6 +16,7 @@ from typing import TYPE_CHECKING, List
|
||||||
|
|
||||||
from prometheus_client import Gauge
|
from prometheus_client import Gauge
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import HttpResponseException
|
from synapse.api.errors import HttpResponseException
|
||||||
from synapse.events import EventBase
|
from synapse.events import EventBase
|
||||||
from synapse.federation.persistence import TransactionActions
|
from synapse.federation.persistence import TransactionActions
|
||||||
|
@ -126,7 +127,10 @@ class TransactionManager:
|
||||||
len(edus),
|
len(edus),
|
||||||
)
|
)
|
||||||
if issue_8631_logger.isEnabledFor(logging.DEBUG):
|
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 = [
|
device_list_updates = [
|
||||||
edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS
|
edu.content for edu in edus if edu.edu_type in DEVICE_UPDATE_EDUS
|
||||||
]
|
]
|
||||||
|
|
|
@ -27,6 +27,7 @@ from typing import (
|
||||||
from matrix_common.versionstring import get_distribution_version_string
|
from matrix_common.versionstring import get_distribution_version_string
|
||||||
from typing_extensions import Literal
|
from typing_extensions import Literal
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import Codes, SynapseError
|
from synapse.api.errors import Codes, SynapseError
|
||||||
from synapse.api.room_versions import RoomVersions
|
from synapse.api.room_versions import RoomVersions
|
||||||
from synapse.api.urls import FEDERATION_UNSTABLE_PREFIX, FEDERATION_V2_PREFIX
|
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):
|
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 = [
|
device_list_updates = [
|
||||||
edu.get("content", {})
|
edu.get("content", {})
|
||||||
for edu in transaction_data.get("edus", [])
|
for edu in transaction_data.get("edus", [])
|
||||||
|
|
|
@ -19,7 +19,7 @@ from prometheus_client import Counter
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
import synapse
|
import synapse
|
||||||
from synapse.api.constants import EventTypes
|
from synapse.api.constants import EduTypes, EventTypes
|
||||||
from synapse.appservice import ApplicationService
|
from synapse.appservice import ApplicationService
|
||||||
from synapse.events import EventBase
|
from synapse.events import EventBase
|
||||||
from synapse.handlers.presence import format_user_presence_state
|
from synapse.handlers.presence import format_user_presence_state
|
||||||
|
@ -503,7 +503,7 @@ class ApplicationServicesHandler:
|
||||||
time_now = self.clock.time_msec()
|
time_now = self.clock.time_msec()
|
||||||
events.extend(
|
events.extend(
|
||||||
{
|
{
|
||||||
"type": "m.presence",
|
"type": EduTypes.PRESENCE,
|
||||||
"sender": event.user_id,
|
"sender": event.user_id,
|
||||||
"content": format_user_presence_state(
|
"content": format_user_presence_state(
|
||||||
event, time_now, include_user_id=False
|
event, time_now, include_user_id=False
|
||||||
|
|
|
@ -28,7 +28,7 @@ from typing import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from synapse.api import errors
|
from synapse.api import errors
|
||||||
from synapse.api.constants import EventTypes
|
from synapse.api.constants import EduTypes, EventTypes
|
||||||
from synapse.api.errors import (
|
from synapse.api.errors import (
|
||||||
Codes,
|
Codes,
|
||||||
FederationDeniedError,
|
FederationDeniedError,
|
||||||
|
@ -279,7 +279,8 @@ class DeviceHandler(DeviceWorkerHandler):
|
||||||
federation_registry = hs.get_federation_registry()
|
federation_registry = hs.get_federation_registry()
|
||||||
|
|
||||||
federation_registry.register_edu_handler(
|
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)
|
hs.get_distributor().observe("user_left_room", self.user_left_room)
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import TYPE_CHECKING, Any, Dict
|
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.errors import SynapseError
|
||||||
from synapse.api.ratelimiting import Ratelimiter
|
from synapse.api.ratelimiting import Ratelimiter
|
||||||
from synapse.logging.context import run_in_background
|
from synapse.logging.context import run_in_background
|
||||||
|
@ -59,11 +59,11 @@ class DeviceMessageHandler:
|
||||||
# to the appropriate worker.
|
# to the appropriate worker.
|
||||||
if hs.get_instance_name() in hs.config.worker.writers.to_device:
|
if hs.get_instance_name() in hs.config.worker.writers.to_device:
|
||||||
hs.get_federation_registry().register_edu_handler(
|
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:
|
else:
|
||||||
hs.get_federation_registry().register_instances_for_edu(
|
hs.get_federation_registry().register_instances_for_edu(
|
||||||
"m.direct_to_device",
|
EduTypes.DIRECT_TO_DEVICE,
|
||||||
hs.config.worker.writers.to_device,
|
hs.config.worker.writers.to_device,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ from unpaddedbase64 import decode_base64
|
||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError
|
from synapse.api.errors import CodeMessageException, Codes, NotFoundError, SynapseError
|
||||||
from synapse.logging.context import make_deferred_yieldable, run_in_background
|
from synapse.logging.context import make_deferred_yieldable, run_in_background
|
||||||
from synapse.logging.opentracing import log_kv, set_tag, tag_args, trace
|
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
|
# Only register this edu handler on master as it requires writing
|
||||||
# device updates to the db
|
# device updates to the db
|
||||||
federation_registry.register_edu_handler(
|
federation_registry.register_edu_handler(
|
||||||
"m.signing_key_update",
|
EduTypes.SIGNING_KEY_UPDATE,
|
||||||
self._edu_updater.incoming_signing_key_update,
|
self._edu_updater.incoming_signing_key_update,
|
||||||
)
|
)
|
||||||
# also handle the unstable version
|
# also handle the unstable version
|
||||||
# FIXME: remove this when enough servers have upgraded
|
# FIXME: remove this when enough servers have upgraded
|
||||||
federation_registry.register_edu_handler(
|
federation_registry.register_edu_handler(
|
||||||
"org.matrix.signing_key_update",
|
EduTypes.UNSTABLE_SIGNING_KEY_UPDATE,
|
||||||
self._edu_updater.incoming_signing_key_update,
|
self._edu_updater.incoming_signing_key_update,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,7 @@ class EventStreamHandler:
|
||||||
states = await presence_handler.get_states(users)
|
states = await presence_handler.get_states(users)
|
||||||
to_add.extend(
|
to_add.extend(
|
||||||
{
|
{
|
||||||
"type": EduTypes.Presence,
|
"type": EduTypes.PRESENCE,
|
||||||
"content": format_user_presence_state(state, time_now),
|
"content": format_user_presence_state(state, time_now),
|
||||||
}
|
}
|
||||||
for state in states
|
for state in states
|
||||||
|
|
|
@ -274,7 +274,7 @@ class InitialSyncHandler:
|
||||||
"rooms": rooms_ret,
|
"rooms": rooms_ret,
|
||||||
"presence": [
|
"presence": [
|
||||||
{
|
{
|
||||||
"type": "m.presence",
|
"type": EduTypes.PRESENCE,
|
||||||
"content": format_user_presence_state(event, now),
|
"content": format_user_presence_state(event, now),
|
||||||
}
|
}
|
||||||
for event in presence
|
for event in presence
|
||||||
|
@ -439,7 +439,7 @@ class InitialSyncHandler:
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
"type": EduTypes.Presence,
|
"type": EduTypes.PRESENCE,
|
||||||
"content": format_user_presence_state(s, time_now),
|
"content": format_user_presence_state(s, time_now),
|
||||||
}
|
}
|
||||||
for s in states
|
for s in states
|
||||||
|
|
|
@ -49,7 +49,7 @@ from prometheus_client import Counter
|
||||||
from typing_extensions import ContextManager
|
from typing_extensions import ContextManager
|
||||||
|
|
||||||
import synapse.metrics
|
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.errors import SynapseError
|
||||||
from synapse.api.presence import UserPresenceState
|
from synapse.api.presence import UserPresenceState
|
||||||
from synapse.appservice import ApplicationService
|
from synapse.appservice import ApplicationService
|
||||||
|
@ -394,7 +394,7 @@ class WorkerPresenceHandler(BasePresenceHandler):
|
||||||
|
|
||||||
# Route presence EDUs to the right worker
|
# Route presence EDUs to the right worker
|
||||||
hs.get_federation_registry().register_instances_for_edu(
|
hs.get_federation_registry().register_instances_for_edu(
|
||||||
"m.presence",
|
EduTypes.PRESENCE,
|
||||||
hs.config.worker.writers.presence,
|
hs.config.worker.writers.presence,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -649,7 +649,9 @@ class PresenceHandler(BasePresenceHandler):
|
||||||
|
|
||||||
federation_registry = hs.get_federation_registry()
|
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(
|
LaterGauge(
|
||||||
"synapse_handlers_presence_user_to_current_state_size",
|
"synapse_handlers_presence_user_to_current_state_size",
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple
|
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.appservice import ApplicationService
|
||||||
from synapse.streams import EventSource
|
from synapse.streams import EventSource
|
||||||
from synapse.types import (
|
from synapse.types import (
|
||||||
|
@ -52,11 +52,11 @@ class ReceiptsHandler:
|
||||||
# to the appropriate worker.
|
# to the appropriate worker.
|
||||||
if hs.get_instance_name() in hs.config.worker.writers.receipts:
|
if hs.get_instance_name() in hs.config.worker.writers.receipts:
|
||||||
hs.get_federation_registry().register_edu_handler(
|
hs.get_federation_registry().register_edu_handler(
|
||||||
"m.receipt", self._received_remote_receipt
|
EduTypes.RECEIPT, self._received_remote_receipt
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
hs.get_federation_registry().register_instances_for_edu(
|
hs.get_federation_registry().register_instances_for_edu(
|
||||||
"m.receipt",
|
EduTypes.RECEIPT,
|
||||||
hs.config.worker.writers.receipts,
|
hs.config.worker.writers.receipts,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, Set, Tuple
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import AuthError, ShadowBanError, SynapseError
|
from synapse.api.errors import AuthError, ShadowBanError, SynapseError
|
||||||
from synapse.appservice import ApplicationService
|
from synapse.appservice import ApplicationService
|
||||||
from synapse.metrics.background_process_metrics import (
|
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:
|
if hs.get_instance_name() not in hs.config.worker.writers.typing:
|
||||||
hs.get_federation_registry().register_instances_for_edu(
|
hs.get_federation_registry().register_instances_for_edu(
|
||||||
"m.typing",
|
EduTypes.TYPING,
|
||||||
hs.config.worker.writers.typing,
|
hs.config.worker.writers.typing,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -143,7 +144,7 @@ class FollowerTypingHandler:
|
||||||
logger.debug("sending typing update to %s", domain)
|
logger.debug("sending typing update to %s", domain)
|
||||||
self.federation.build_and_send_edu(
|
self.federation.build_and_send_edu(
|
||||||
destination=domain,
|
destination=domain,
|
||||||
edu_type="m.typing",
|
edu_type=EduTypes.TYPING,
|
||||||
content={
|
content={
|
||||||
"room_id": member.room_id,
|
"room_id": member.room_id,
|
||||||
"user_id": member.user_id,
|
"user_id": member.user_id,
|
||||||
|
@ -218,7 +219,9 @@ class TypingWriterHandler(FollowerTypingHandler):
|
||||||
|
|
||||||
self.hs = hs
|
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)
|
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:
|
def _make_event_for(self, room_id: str) -> JsonDict:
|
||||||
typing = self.get_typing_handler()._room_typing[room_id]
|
typing = self.get_typing_handler()._room_typing[room_id]
|
||||||
return {
|
return {
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": room_id,
|
"room_id": room_id,
|
||||||
"content": {"user_ids": list(typing)},
|
"content": {"user_ids": list(typing)},
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ from prometheus_client import Counter
|
||||||
|
|
||||||
from twisted.internet import defer
|
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.api.errors import AuthError
|
||||||
from synapse.events import EventBase
|
from synapse.events import EventBase
|
||||||
from synapse.handlers.presence import format_user_presence_state
|
from synapse.handlers.presence import format_user_presence_state
|
||||||
|
@ -632,7 +632,7 @@ class Notifier:
|
||||||
now = self.clock.time_msec()
|
now = self.clock.time_msec()
|
||||||
new_events[:] = [
|
new_events[:] = [
|
||||||
{
|
{
|
||||||
"type": "m.presence",
|
"type": EduTypes.PRESENCE,
|
||||||
"content": format_user_presence_state(event, now),
|
"content": format_user_presence_state(event, now),
|
||||||
}
|
}
|
||||||
for event in new_events
|
for event in new_events
|
||||||
|
|
|
@ -16,7 +16,7 @@ import logging
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
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.errors import Codes, StoreError, SynapseError
|
||||||
from synapse.api.filtering import FilterCollection
|
from synapse.api.filtering import FilterCollection
|
||||||
from synapse.api.presence import UserPresenceState
|
from synapse.api.presence import UserPresenceState
|
||||||
|
@ -305,7 +305,7 @@ class SyncRestServlet(RestServlet):
|
||||||
return {
|
return {
|
||||||
"events": [
|
"events": [
|
||||||
{
|
{
|
||||||
"type": "m.presence",
|
"type": EduTypes.PRESENCE,
|
||||||
"sender": event.user_id,
|
"sender": event.user_id,
|
||||||
"content": format_user_presence_state(
|
"content": format_user_presence_state(
|
||||||
event, time_now, include_user_id=False
|
event, time_now, include_user_id=False
|
||||||
|
|
|
@ -28,6 +28,7 @@ from typing import (
|
||||||
cast,
|
cast,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import Codes, StoreError
|
from synapse.api.errors import Codes, StoreError
|
||||||
from synapse.logging.opentracing import (
|
from synapse.logging.opentracing import (
|
||||||
get_active_span_text_map,
|
get_active_span_text_map,
|
||||||
|
@ -419,7 +420,7 @@ class DeviceWorkerStore(SQLBaseStore):
|
||||||
# Add the updated cross-signing keys to the results list
|
# Add the updated cross-signing keys to the results list
|
||||||
for user_id, result in cross_signing_keys_by_user.items():
|
for user_id, result in cross_signing_keys_by_user.items():
|
||||||
result["user_id"] = user_id
|
result["user_id"] = user_id
|
||||||
results.append(("m.signing_key_update", result))
|
results.append((EduTypes.SIGNING_KEY_UPDATE, result))
|
||||||
# also send the unstable version
|
# also send the unstable version
|
||||||
# FIXME: remove this when enough servers have upgraded
|
# FIXME: remove this when enough servers have upgraded
|
||||||
# and remove the length budgeting above.
|
# and remove the length budgeting above.
|
||||||
|
@ -545,7 +546,7 @@ class DeviceWorkerStore(SQLBaseStore):
|
||||||
else:
|
else:
|
||||||
result["deleted"] = True
|
result["deleted"] = True
|
||||||
|
|
||||||
results.append(("m.device_list_update", result))
|
results.append((EduTypes.DEVICE_LIST_UPDATE, result))
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ from typing import (
|
||||||
cast,
|
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.slave.storage._slaved_id_tracker import SlavedIdTracker
|
||||||
from synapse.replication.tcp.streams import ReceiptsStream
|
from synapse.replication.tcp.streams import ReceiptsStream
|
||||||
from synapse.storage._base import SQLBaseStore, db_to_json, make_in_list_sql_clause
|
from synapse.storage._base import SQLBaseStore, db_to_json, make_in_list_sql_clause
|
||||||
|
@ -363,7 +363,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
||||||
row["user_id"]
|
row["user_id"]
|
||||||
] = db_to_json(row["data"])
|
] = 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(
|
@cachedList(
|
||||||
cached_method_name="_get_linearized_receipts_for_room",
|
cached_method_name="_get_linearized_receipts_for_room",
|
||||||
|
@ -411,7 +411,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
||||||
# receipts by room, event and type.
|
# receipts by room, event and type.
|
||||||
room_event = results.setdefault(
|
room_event = results.setdefault(
|
||||||
row["room_id"],
|
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:
|
# The content is of the form:
|
||||||
|
@ -476,7 +476,7 @@ class ReceiptsWorkerStore(SQLBaseStore):
|
||||||
# receipts by room, event and type.
|
# receipts by room, event and type.
|
||||||
room_event = results.setdefault(
|
room_event = results.setdefault(
|
||||||
row["room_id"],
|
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:
|
# The content is of the form:
|
||||||
|
|
|
@ -20,7 +20,7 @@ from unittest.mock import patch
|
||||||
import jsonschema
|
import jsonschema
|
||||||
from frozendict import frozendict
|
from frozendict import frozendict
|
||||||
|
|
||||||
from synapse.api.constants import EventContentFields
|
from synapse.api.constants import EduTypes, EventContentFields
|
||||||
from synapse.api.errors import SynapseError
|
from synapse.api.errors import SynapseError
|
||||||
from synapse.api.filtering import Filter
|
from synapse.api.filtering import Filter
|
||||||
from synapse.events import make_event_from_dict
|
from synapse.events import make_event_from_dict
|
||||||
|
@ -85,13 +85,13 @@ class FilteringTestCase(unittest.HomeserverTestCase):
|
||||||
"org.matrix.not_labels": ["#work"],
|
"org.matrix.not_labels": ["#work"],
|
||||||
},
|
},
|
||||||
"ephemeral": {
|
"ephemeral": {
|
||||||
"types": ["m.receipt", "m.typing"],
|
"types": [EduTypes.RECEIPT, EduTypes.TYPING],
|
||||||
"not_rooms": ["!726s6s6q:example.com"],
|
"not_rooms": ["!726s6s6q:example.com"],
|
||||||
"not_senders": ["@spam:example.com"],
|
"not_senders": ["@spam:example.com"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"presence": {
|
"presence": {
|
||||||
"types": ["m.presence"],
|
"types": [EduTypes.PRESENCE],
|
||||||
"not_senders": ["@alice:example.com"],
|
"not_senders": ["@alice:example.com"],
|
||||||
},
|
},
|
||||||
"event_format": "client",
|
"event_format": "client",
|
||||||
|
|
|
@ -439,7 +439,7 @@ class PresenceRouterTestCase(FederatingHomeserverTestCase):
|
||||||
|
|
||||||
for edu in edus:
|
for edu in edus:
|
||||||
# Make sure we're only checking presence-type EDUs
|
# Make sure we're only checking presence-type EDUs
|
||||||
if edu["edu_type"] != EduTypes.Presence:
|
if edu["edu_type"] != EduTypes.PRESENCE:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# EDUs can contain multiple presence updates
|
# EDUs can contain multiple presence updates
|
||||||
|
|
|
@ -19,7 +19,7 @@ from signedjson.types import BaseKey, SigningKey
|
||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.constants import RoomEncryptionAlgorithms
|
from synapse.api.constants import EduTypes, RoomEncryptionAlgorithms
|
||||||
from synapse.rest import admin
|
from synapse.rest import admin
|
||||||
from synapse.rest.client import login
|
from synapse.rest.client import login
|
||||||
from synapse.types import JsonDict, ReadReceipt
|
from synapse.types import JsonDict, ReadReceipt
|
||||||
|
@ -63,7 +63,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
|
||||||
data["edus"],
|
data["edus"],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"edu_type": "m.receipt",
|
"edu_type": EduTypes.RECEIPT,
|
||||||
"content": {
|
"content": {
|
||||||
"room_id": {
|
"room_id": {
|
||||||
"m.read": {
|
"m.read": {
|
||||||
|
@ -103,7 +103,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
|
||||||
data["edus"],
|
data["edus"],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"edu_type": "m.receipt",
|
"edu_type": EduTypes.RECEIPT,
|
||||||
"content": {
|
"content": {
|
||||||
"room_id": {
|
"room_id": {
|
||||||
"m.read": {
|
"m.read": {
|
||||||
|
@ -138,7 +138,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
|
||||||
data["edus"],
|
data["edus"],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"edu_type": "m.receipt",
|
"edu_type": EduTypes.RECEIPT,
|
||||||
"content": {
|
"content": {
|
||||||
"room_id": {
|
"room_id": {
|
||||||
"m.read": {
|
"m.read": {
|
||||||
|
@ -322,8 +322,10 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
|
|
||||||
# expect signing key update edu
|
# expect signing key update edu
|
||||||
self.assertEqual(len(self.edus), 2)
|
self.assertEqual(len(self.edus), 2)
|
||||||
self.assertEqual(self.edus.pop(0)["edu_type"], "m.signing_key_update")
|
self.assertEqual(self.edus.pop(0)["edu_type"], EduTypes.SIGNING_KEY_UPDATE)
|
||||||
self.assertEqual(self.edus.pop(0)["edu_type"], "org.matrix.signing_key_update")
|
self.assertEqual(
|
||||||
|
self.edus.pop(0)["edu_type"], EduTypes.UNSTABLE_SIGNING_KEY_UPDATE
|
||||||
|
)
|
||||||
|
|
||||||
# sign the devices
|
# sign the devices
|
||||||
d1_json = build_device_dict(u1, "D1", device1_signing_key)
|
d1_json = build_device_dict(u1, "D1", device1_signing_key)
|
||||||
|
@ -348,7 +350,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
self.assertEqual(len(self.edus), 2)
|
self.assertEqual(len(self.edus), 2)
|
||||||
stream_id = None # FIXME: there is a discontinuity in the stream IDs: see #7142
|
stream_id = None # FIXME: there is a discontinuity in the stream IDs: see #7142
|
||||||
for edu in self.edus:
|
for edu in self.edus:
|
||||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||||
c = edu["content"]
|
c = edu["content"]
|
||||||
if stream_id is not None:
|
if stream_id is not None:
|
||||||
self.assertEqual(c["prev_id"], [stream_id])
|
self.assertEqual(c["prev_id"], [stream_id])
|
||||||
|
@ -388,7 +390,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
# expect three edus, in an unknown order
|
# expect three edus, in an unknown order
|
||||||
self.assertEqual(len(self.edus), 3)
|
self.assertEqual(len(self.edus), 3)
|
||||||
for edu in self.edus:
|
for edu in self.edus:
|
||||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||||
c = edu["content"]
|
c = edu["content"]
|
||||||
self.assertGreaterEqual(
|
self.assertGreaterEqual(
|
||||||
c.items(),
|
c.items(),
|
||||||
|
@ -435,7 +437,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
self.assertEqual(len(self.edus), 3)
|
self.assertEqual(len(self.edus), 3)
|
||||||
stream_id = None
|
stream_id = None
|
||||||
for edu in self.edus:
|
for edu in self.edus:
|
||||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||||
c = edu["content"]
|
c = edu["content"]
|
||||||
self.assertEqual(c["prev_id"], [stream_id] if stream_id is not None else [])
|
self.assertEqual(c["prev_id"], [stream_id] if stream_id is not None else [])
|
||||||
if stream_id is not None:
|
if stream_id is not None:
|
||||||
|
@ -487,7 +489,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
# there should be a single update for this user.
|
# there should be a single update for this user.
|
||||||
self.assertEqual(len(self.edus), 1)
|
self.assertEqual(len(self.edus), 1)
|
||||||
edu = self.edus.pop(0)
|
edu = self.edus.pop(0)
|
||||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||||
c = edu["content"]
|
c = edu["content"]
|
||||||
|
|
||||||
# synapse uses an empty prev_id list to indicate "needs a full resync".
|
# synapse uses an empty prev_id list to indicate "needs a full resync".
|
||||||
|
@ -544,7 +546,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
# ... and we should get a single update for this user.
|
# ... and we should get a single update for this user.
|
||||||
self.assertEqual(len(self.edus), 1)
|
self.assertEqual(len(self.edus), 1)
|
||||||
edu = self.edus.pop(0)
|
edu = self.edus.pop(0)
|
||||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||||
c = edu["content"]
|
c = edu["content"]
|
||||||
|
|
||||||
# synapse uses an empty prev_id list to indicate "needs a full resync".
|
# synapse uses an empty prev_id list to indicate "needs a full resync".
|
||||||
|
@ -560,7 +562,7 @@ class FederationSenderDevicesTestCases(HomeserverTestCase):
|
||||||
"""Check that the given EDU is an update for the given device
|
"""Check that the given EDU is an update for the given device
|
||||||
Returns the stream_id.
|
Returns the stream_id.
|
||||||
"""
|
"""
|
||||||
self.assertEqual(edu["edu_type"], "m.device_list_update")
|
self.assertEqual(edu["edu_type"], EduTypes.DEVICE_LIST_UPDATE)
|
||||||
content = edu["content"]
|
content = edu["content"]
|
||||||
|
|
||||||
expected = {
|
expected = {
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
|
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
from tests.unittest import DEBUG, override_config
|
from tests.unittest import DEBUG, override_config
|
||||||
|
|
||||||
|
@ -50,7 +52,7 @@ class RoomDirectoryFederationTests(unittest.FederatingHomeserverTestCase):
|
||||||
"/_matrix/federation/v1/send/txn_id_1234/",
|
"/_matrix/federation/v1/send/txn_id_1234/",
|
||||||
content={
|
content={
|
||||||
"edus": [
|
"edus": [
|
||||||
{"edu_type": "m.device_list_update", "content": {"foo": "bar"}}
|
{"edu_type": EduTypes.DEVICE_LIST_UPDATE, "content": {"foo": "bar"}}
|
||||||
],
|
],
|
||||||
"pdus": [],
|
"pdus": [],
|
||||||
},
|
},
|
||||||
|
|
|
@ -22,6 +22,7 @@ from twisted.test.proto_helpers import MemoryReactor
|
||||||
|
|
||||||
import synapse.rest.admin
|
import synapse.rest.admin
|
||||||
import synapse.storage
|
import synapse.storage
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.appservice import (
|
from synapse.appservice import (
|
||||||
ApplicationService,
|
ApplicationService,
|
||||||
TransactionOneTimeKeyCounts,
|
TransactionOneTimeKeyCounts,
|
||||||
|
@ -476,7 +477,7 @@ class ApplicationServicesHandlerSendEventsTestCase(unittest.HomeserverTestCase):
|
||||||
|
|
||||||
# Check that the ephemeral event is a read receipt with the expected structure
|
# Check that the ephemeral event is a read receipt with the expected structure
|
||||||
latest_read_receipt = all_ephemeral_events[-1]
|
latest_read_receipt = all_ephemeral_events[-1]
|
||||||
self.assertEqual(latest_read_receipt["type"], "m.receipt")
|
self.assertEqual(latest_read_receipt["type"], EduTypes.RECEIPT)
|
||||||
|
|
||||||
event_id = list(latest_read_receipt["content"].keys())[0]
|
event_id = list(latest_read_receipt["content"].keys())[0]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from synapse.api.constants import ReceiptTypes
|
from synapse.api.constants import EduTypes, ReceiptTypes
|
||||||
from synapse.types import JsonDict
|
from synapse.types import JsonDict
|
||||||
|
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
|
@ -39,7 +39,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[],
|
[],
|
||||||
|
@ -64,7 +64,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -79,7 +79,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -105,7 +105,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -120,7 +120,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -140,7 +140,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -155,7 +155,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -174,7 +174,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -187,7 +187,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -202,7 +202,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -224,7 +224,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -237,7 +237,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -266,7 +266,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -291,7 +291,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -310,7 +310,7 @@ class ReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
"type": "m.receipt",
|
"type": EduTypes.RECEIPT,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
original_events = deepcopy(events)
|
original_events = deepcopy(events)
|
||||||
|
|
|
@ -21,6 +21,7 @@ from twisted.internet import defer
|
||||||
from twisted.test.proto_helpers import MemoryReactor
|
from twisted.test.proto_helpers import MemoryReactor
|
||||||
from twisted.web.resource import Resource
|
from twisted.web.resource import Resource
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.api.errors import AuthError
|
from synapse.api.errors import AuthError
|
||||||
from synapse.federation.transport.server import TransportLayerServer
|
from synapse.federation.transport.server import TransportLayerServer
|
||||||
from synapse.server import HomeServer
|
from synapse.server import HomeServer
|
||||||
|
@ -184,7 +185,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
events[0],
|
events[0],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"content": {"user_ids": [U_APPLE.to_string()]},
|
"content": {"user_ids": [U_APPLE.to_string()]},
|
||||||
}
|
}
|
||||||
|
@ -209,7 +210,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
"farm",
|
"farm",
|
||||||
path="/_matrix/federation/v1/send/1000000",
|
path="/_matrix/federation/v1/send/1000000",
|
||||||
data=_expect_edu_transaction(
|
data=_expect_edu_transaction(
|
||||||
"m.typing",
|
EduTypes.TYPING,
|
||||||
content={
|
content={
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"user_id": U_APPLE.to_string(),
|
"user_id": U_APPLE.to_string(),
|
||||||
|
@ -231,7 +232,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
"PUT",
|
"PUT",
|
||||||
"/_matrix/federation/v1/send/1000000",
|
"/_matrix/federation/v1/send/1000000",
|
||||||
_make_edu_transaction_json(
|
_make_edu_transaction_json(
|
||||||
"m.typing",
|
EduTypes.TYPING,
|
||||||
content={
|
content={
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"user_id": U_ONION.to_string(),
|
"user_id": U_ONION.to_string(),
|
||||||
|
@ -254,7 +255,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
events[0],
|
events[0],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"content": {"user_ids": [U_ONION.to_string()]},
|
"content": {"user_ids": [U_ONION.to_string()]},
|
||||||
}
|
}
|
||||||
|
@ -270,7 +271,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
"PUT",
|
"PUT",
|
||||||
"/_matrix/federation/v1/send/1000000",
|
"/_matrix/federation/v1/send/1000000",
|
||||||
_make_edu_transaction_json(
|
_make_edu_transaction_json(
|
||||||
"m.typing",
|
EduTypes.TYPING,
|
||||||
content={
|
content={
|
||||||
"room_id": OTHER_ROOM_ID,
|
"room_id": OTHER_ROOM_ID,
|
||||||
"user_id": U_ONION.to_string(),
|
"user_id": U_ONION.to_string(),
|
||||||
|
@ -324,7 +325,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
"farm",
|
"farm",
|
||||||
path="/_matrix/federation/v1/send/1000000",
|
path="/_matrix/federation/v1/send/1000000",
|
||||||
data=_expect_edu_transaction(
|
data=_expect_edu_transaction(
|
||||||
"m.typing",
|
EduTypes.TYPING,
|
||||||
content={
|
content={
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"user_id": U_APPLE.to_string(),
|
"user_id": U_APPLE.to_string(),
|
||||||
|
@ -345,7 +346,13 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
events[0],
|
events[0],
|
||||||
[{"type": "m.typing", "room_id": ROOM_ID, "content": {"user_ids": []}}],
|
[
|
||||||
|
{
|
||||||
|
"type": EduTypes.TYPING,
|
||||||
|
"room_id": ROOM_ID,
|
||||||
|
"content": {"user_ids": []},
|
||||||
|
}
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_typing_timeout(self) -> None:
|
def test_typing_timeout(self) -> None:
|
||||||
|
@ -379,7 +386,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
events[0],
|
events[0],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"content": {"user_ids": [U_APPLE.to_string()]},
|
"content": {"user_ids": [U_APPLE.to_string()]},
|
||||||
}
|
}
|
||||||
|
@ -402,7 +409,13 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
events[0],
|
events[0],
|
||||||
[{"type": "m.typing", "room_id": ROOM_ID, "content": {"user_ids": []}}],
|
[
|
||||||
|
{
|
||||||
|
"type": EduTypes.TYPING,
|
||||||
|
"room_id": ROOM_ID,
|
||||||
|
"content": {"user_ids": []},
|
||||||
|
}
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# SYN-230 - see if we can still set after timeout
|
# SYN-230 - see if we can still set after timeout
|
||||||
|
@ -433,7 +446,7 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
|
||||||
events[0],
|
events[0],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": ROOM_ID,
|
"room_id": ROOM_ID,
|
||||||
"content": {"user_ids": [U_APPLE.to_string()]},
|
"content": {"user_ids": [U_APPLE.to_string()]},
|
||||||
}
|
}
|
||||||
|
|
|
@ -399,7 +399,7 @@ class ModuleApiTestCase(HomeserverTestCase):
|
||||||
|
|
||||||
for edu in edus:
|
for edu in edus:
|
||||||
# Make sure we're only checking presence-type EDUs
|
# Make sure we're only checking presence-type EDUs
|
||||||
if edu["edu_type"] != EduTypes.Presence:
|
if edu["edu_type"] != EduTypes.PRESENCE:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# EDUs can contain multiple presence updates
|
# EDUs can contain multiple presence updates
|
||||||
|
|
|
@ -19,6 +19,7 @@ from unittest.mock import Mock
|
||||||
from twisted.test.proto_helpers import MemoryReactor
|
from twisted.test.proto_helpers import MemoryReactor
|
||||||
|
|
||||||
import synapse.rest.admin
|
import synapse.rest.admin
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.rest.client import events, login, room
|
from synapse.rest.client import events, login, room
|
||||||
from synapse.server import HomeServer
|
from synapse.server import HomeServer
|
||||||
from synapse.util import Clock
|
from synapse.util import Clock
|
||||||
|
@ -103,7 +104,7 @@ class EventStreamPermissionsTestCase(unittest.HomeserverTestCase):
|
||||||
c
|
c
|
||||||
for c in channel.json_body["chunk"]
|
for c in channel.json_body["chunk"]
|
||||||
if not (
|
if not (
|
||||||
c.get("type") == "m.presence"
|
c.get("type") == EduTypes.PRESENCE
|
||||||
and c["content"].get("user_id") == self.user_id
|
and c["content"].get("user_id") == self.user_id
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
|
@ -26,6 +26,7 @@ from twisted.test.proto_helpers import MemoryReactor
|
||||||
|
|
||||||
import synapse.rest.admin
|
import synapse.rest.admin
|
||||||
from synapse.api.constants import (
|
from synapse.api.constants import (
|
||||||
|
EduTypes,
|
||||||
EventContentFields,
|
EventContentFields,
|
||||||
EventTypes,
|
EventTypes,
|
||||||
Membership,
|
Membership,
|
||||||
|
@ -1412,7 +1413,7 @@ class RoomInitialSyncTestCase(RoomBase):
|
||||||
e["content"]["user_id"]: e for e in channel.json_body["presence"]
|
e["content"]["user_id"]: e for e in channel.json_body["presence"]
|
||||||
}
|
}
|
||||||
self.assertTrue(self.user_id in presence_by_user)
|
self.assertTrue(self.user_id in presence_by_user)
|
||||||
self.assertEqual("m.presence", presence_by_user[self.user_id]["type"])
|
self.assertEqual(EduTypes.PRESENCE, presence_by_user[self.user_id]["type"])
|
||||||
|
|
||||||
|
|
||||||
class RoomMessageListTestCase(RoomBase):
|
class RoomMessageListTestCase(RoomBase):
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.rest import admin
|
from synapse.rest import admin
|
||||||
from synapse.rest.client import login, sendtodevice, sync
|
from synapse.rest.client import login, sendtodevice, sync
|
||||||
|
|
||||||
|
@ -139,7 +140,7 @@ class SendToDeviceTestCase(HomeserverTestCase):
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
self.get_success(
|
self.get_success(
|
||||||
federation_registry.on_edu(
|
federation_registry.on_edu(
|
||||||
"m.direct_to_device",
|
EduTypes.DIRECT_TO_DEVICE,
|
||||||
"remote_server",
|
"remote_server",
|
||||||
{
|
{
|
||||||
"sender": "@user:remote_server",
|
"sender": "@user:remote_server",
|
||||||
|
@ -172,7 +173,7 @@ class SendToDeviceTestCase(HomeserverTestCase):
|
||||||
# and we can send more messages
|
# and we can send more messages
|
||||||
self.get_success(
|
self.get_success(
|
||||||
federation_registry.on_edu(
|
federation_registry.on_edu(
|
||||||
"m.direct_to_device",
|
EduTypes.DIRECT_TO_DEVICE,
|
||||||
"remote_server",
|
"remote_server",
|
||||||
{
|
{
|
||||||
"sender": "@user:remote_server",
|
"sender": "@user:remote_server",
|
||||||
|
|
|
@ -17,7 +17,7 @@ from unittest.mock import Mock, patch
|
||||||
from twisted.test.proto_helpers import MemoryReactor
|
from twisted.test.proto_helpers import MemoryReactor
|
||||||
|
|
||||||
import synapse.rest.admin
|
import synapse.rest.admin
|
||||||
from synapse.api.constants import EventTypes
|
from synapse.api.constants import EduTypes, EventTypes
|
||||||
from synapse.rest.client import (
|
from synapse.rest.client import (
|
||||||
directory,
|
directory,
|
||||||
login,
|
login,
|
||||||
|
@ -226,7 +226,7 @@ class RoomTestCase(_ShadowBannedBase):
|
||||||
events[0],
|
events[0],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": room_id,
|
"room_id": room_id,
|
||||||
"content": {"user_ids": [self.other_user_id]},
|
"content": {"user_ids": [self.other_user_id]},
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ from twisted.test.proto_helpers import MemoryReactor
|
||||||
|
|
||||||
import synapse.rest.admin
|
import synapse.rest.admin
|
||||||
from synapse.api.constants import (
|
from synapse.api.constants import (
|
||||||
|
EduTypes,
|
||||||
EventContentFields,
|
EventContentFields,
|
||||||
EventTypes,
|
EventTypes,
|
||||||
ReceiptTypes,
|
ReceiptTypes,
|
||||||
|
@ -504,7 +505,7 @@ class ReadReceiptsTestCase(unittest.HomeserverTestCase):
|
||||||
|
|
||||||
# Checks if event is a read receipt
|
# Checks if event is a read receipt
|
||||||
def is_read_receipt(event: JsonDict) -> bool:
|
def is_read_receipt(event: JsonDict) -> bool:
|
||||||
return event["type"] == "m.receipt"
|
return event["type"] == EduTypes.RECEIPT
|
||||||
|
|
||||||
# Sync
|
# Sync
|
||||||
channel = self.make_request(
|
channel = self.make_request(
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
from twisted.test.proto_helpers import MemoryReactor
|
from twisted.test.proto_helpers import MemoryReactor
|
||||||
|
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
from synapse.rest.client import room
|
from synapse.rest.client import room
|
||||||
from synapse.server import HomeServer
|
from synapse.server import HomeServer
|
||||||
from synapse.types import UserID
|
from synapse.types import UserID
|
||||||
|
@ -67,7 +68,7 @@ class RoomTypingTestCase(unittest.HomeserverTestCase):
|
||||||
events[0],
|
events[0],
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"type": "m.typing",
|
"type": EduTypes.TYPING,
|
||||||
"room_id": self.room_id,
|
"room_id": self.room_id,
|
||||||
"content": {"user_ids": [self.user_id]},
|
"content": {"user_ids": [self.user_id]},
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import synapse.api.errors
|
import synapse.api.errors
|
||||||
|
from synapse.api.constants import EduTypes
|
||||||
|
|
||||||
from tests.unittest import HomeserverTestCase
|
from tests.unittest import HomeserverTestCase
|
||||||
|
|
||||||
|
@ -266,10 +267,12 @@ class DeviceStoreTestCase(HomeserverTestCase):
|
||||||
# (This is a temporary arrangement for backwards compatibility!)
|
# (This is a temporary arrangement for backwards compatibility!)
|
||||||
self.assertEqual(len(device_updates), 2, device_updates)
|
self.assertEqual(len(device_updates), 2, device_updates)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
device_updates[0][0], "m.signing_key_update", device_updates[0]
|
device_updates[0][0], EduTypes.SIGNING_KEY_UPDATE, device_updates[0]
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
device_updates[1][0], "org.matrix.signing_key_update", device_updates[1]
|
device_updates[1][0],
|
||||||
|
EduTypes.UNSTABLE_SIGNING_KEY_UPDATE,
|
||||||
|
device_updates[1],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check there are no more device updates left.
|
# Check there are no more device updates left.
|
||||||
|
|
Loading…
Reference in a new issue