Please mypy

hs/push-reports-to-as
Will Hunt 2020-10-08 15:58:31 +01:00
parent d0dd953c27
commit 6dfe195764
2 changed files with 29 additions and 25 deletions

View File

@ -18,7 +18,7 @@ from typing import TYPE_CHECKING, List, Optional
from synapse.api.constants import EventTypes from synapse.api.constants import EventTypes
from synapse.events import EventBase from synapse.events import EventBase
from synapse.types import GroupID, JsonDict, RoomAlias, UserID, get_domain_from_id from synapse.types import GroupID, JsonDict, UserID, get_domain_from_id
from synapse.util.caches.descriptors import cached from synapse.util.caches.descriptors import cached
if TYPE_CHECKING: if TYPE_CHECKING:
@ -138,13 +138,13 @@ class ApplicationService:
return regex_obj return regex_obj
return None return None
def _is_exclusive(self, ns_key: str, test_string: str): def _is_exclusive(self, ns_key: str, test_string: str) -> bool:
regex_obj = self._matches_regex(test_string, ns_key) regex_obj = self._matches_regex(test_string, ns_key)
if regex_obj: if regex_obj:
return regex_obj["exclusive"] return regex_obj["exclusive"]
return False return False
async def _matches_user(self, event, store: "DataStore"): async def _matches_user(self, event: EventBase, store: "DataStore") -> bool:
if not event: if not event:
return False return False
@ -163,12 +163,13 @@ class ApplicationService:
return does_match return does_match
@cached(num_args=1) @cached(num_args=1)
async def matches_user_in_member_list(self, room_id: str, store: "DataStore"): async def matches_user_in_member_list(
self, room_id: str, store: "DataStore"
) -> bool:
"""Check if this service is interested a room based upon it's membership """Check if this service is interested a room based upon it's membership
Args: Args:
room_id(RoomId): The room to check. room_id: The room to check.
store(DataStore)
Returns: Returns:
True if this service would like to know about this room. True if this service would like to know about this room.
""" """
@ -180,12 +181,12 @@ class ApplicationService:
return True return True
return False return False
def _matches_room_id(self, event): def _matches_room_id(self, event: EventBase) -> bool:
if hasattr(event, "room_id"): if hasattr(event, "room_id"):
return self.is_interested_in_room(event.room_id) return self.is_interested_in_room(event.room_id)
return False return False
async def _matches_aliases(self, event, store: "DataStore"): async def _matches_aliases(self, event: EventBase, store: "DataStore") -> bool:
if not store or not event: if not store or not event:
return False return False
@ -195,12 +196,11 @@ class ApplicationService:
return True return True
return False return False
async def is_interested(self, event, store: "DataStore") -> bool: async def is_interested(self, event: EventBase, store: "DataStore") -> bool:
"""Check if this service is interested in this event. """Check if this service is interested in this event.
Args: Args:
event(Event): The event to check. event: The event to check.
store(DataStore)
Returns: Returns:
True if this service would like to know about this event. True if this service would like to know about this event.
""" """
@ -217,12 +217,13 @@ class ApplicationService:
return False return False
@cached(num_args=1) @cached(num_args=1)
async def is_interested_in_presence(self, user_id: UserID, store: "DataStore"): async def is_interested_in_presence(
self, user_id: UserID, store: "DataStore"
) -> bool:
"""Check if this service is interested a user's presence """Check if this service is interested a user's presence
Args: Args:
user_id(UserID): The user to check. user_id: The user to check.
store(DataStore)
Returns: Returns:
True if this service would like to know about presence for this user. True if this service would like to know about presence for this user.
""" """
@ -237,31 +238,31 @@ class ApplicationService:
return True return True
return False return False
def is_interested_in_user(self, user_id: UserID): def is_interested_in_user(self, user_id: str) -> bool:
return ( return (
self._matches_regex(user_id, ApplicationService.NS_USERS) self._matches_regex(user_id, ApplicationService.NS_USERS)
or user_id == self.sender or user_id == self.sender
) )
def is_interested_in_alias(self, alias: RoomAlias): def is_interested_in_alias(self, alias: str) -> bool:
return bool(self._matches_regex(alias, ApplicationService.NS_ALIASES)) return bool(self._matches_regex(alias, ApplicationService.NS_ALIASES))
def is_interested_in_room(self, room_id: UserID): def is_interested_in_room(self, room_id: str) -> bool:
return bool(self._matches_regex(room_id, ApplicationService.NS_ROOMS)) return bool(self._matches_regex(room_id, ApplicationService.NS_ROOMS))
def is_exclusive_user(self, user_id: UserID): def is_exclusive_user(self, user_id: str) -> bool:
return ( return (
self._is_exclusive(ApplicationService.NS_USERS, user_id) self._is_exclusive(ApplicationService.NS_USERS, user_id)
or user_id == self.sender or user_id == self.sender
) )
def is_interested_in_protocol(self, protocol: str): def is_interested_in_protocol(self, protocol: str) -> bool:
return protocol in self.protocols return protocol in self.protocols
def is_exclusive_alias(self, alias: str): def is_exclusive_alias(self, alias: str) -> bool:
return self._is_exclusive(ApplicationService.NS_ALIASES, alias) return self._is_exclusive(ApplicationService.NS_ALIASES, alias)
def is_exclusive_room(self, room_id: str): def is_exclusive_room(self, room_id: str) -> bool:
return self._is_exclusive(ApplicationService.NS_ROOMS, room_id) return self._is_exclusive(ApplicationService.NS_ROOMS, room_id)
def get_exclusive_user_regexes(self): def get_exclusive_user_regexes(self):
@ -289,7 +290,7 @@ class ApplicationService:
if "group_id" in regex_obj and regex_obj["regex"].match(user_id) if "group_id" in regex_obj and regex_obj["regex"].match(user_id)
) )
def is_rate_limited(self): def is_rate_limited(self) -> bool:
return self.rate_limited return self.rate_limited
def __str__(self): def __str__(self):

View File

@ -206,7 +206,7 @@ class ApplicationServiceApi(SimpleHttpClient):
self, self,
service: "ApplicationService", service: "ApplicationService",
events: List[EventBase], events: List[EventBase],
ephemeral: Optional[JsonDict] = None, ephemeral: Optional[List[JsonDict]] = None,
txn_id: Optional[int] = None, txn_id: Optional[int] = None,
): ):
if service.url is None: if service.url is None:
@ -221,9 +221,12 @@ class ApplicationServiceApi(SimpleHttpClient):
txn_id = 0 txn_id = 0
uri = service.url + ("/transactions/%s" % urllib.parse.quote(str(txn_id))) uri = service.url + ("/transactions/%s" % urllib.parse.quote(str(txn_id)))
body = {"events": events}
if ephemeral: if ephemeral:
body["de.sorunome.msc2409.ephemeral"] = ephemeral body = {"events": events, "de.sorunome.msc2409.ephemeral": ephemeral}
else:
body = {"events": events}
try: try:
await self.put_json( await self.put_json(
uri=uri, json_body=body, args={"access_token": service.hs_token}, uri=uri, json_body=body, args={"access_token": service.hs_token},