Add type hints to the spam check module (#6915)

Add typing information to the spam checker modules.
This commit is contained in:
Patrick Cloke 2020-02-14 12:49:40 -05:00 committed by GitHub
parent 32873efa87
commit 10027c80b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 22 deletions

1
changelog.d/6915.misc Normal file
View file

@ -0,0 +1 @@
Add type hints to the spam checker module.

View file

@ -19,9 +19,13 @@ from typing import Dict
from synapse.spam_checker_api import SpamCheckerApi from synapse.spam_checker_api import SpamCheckerApi
MYPY = False
if MYPY:
import synapse.server
class SpamChecker(object): class SpamChecker(object):
def __init__(self, hs): def __init__(self, hs: "synapse.server.HomeServer"):
self.spam_checker = None self.spam_checker = None
module = None module = None
@ -41,7 +45,7 @@ class SpamChecker(object):
else: else:
self.spam_checker = module(config=config) self.spam_checker = module(config=config)
def check_event_for_spam(self, event): def check_event_for_spam(self, event: "synapse.events.EventBase") -> bool:
"""Checks if a given event is considered "spammy" by this server. """Checks if a given event is considered "spammy" by this server.
If the server considers an event spammy, then it will be rejected if If the server considers an event spammy, then it will be rejected if
@ -49,26 +53,30 @@ class SpamChecker(object):
users receive a blank event. users receive a blank event.
Args: Args:
event (synapse.events.EventBase): the event to be checked event: the event to be checked
Returns: Returns:
bool: True if the event is spammy. True if the event is spammy.
""" """
if self.spam_checker is None: if self.spam_checker is None:
return False return False
return self.spam_checker.check_event_for_spam(event) return self.spam_checker.check_event_for_spam(event)
def user_may_invite(self, inviter_userid, invitee_userid, room_id): def user_may_invite(
self, inviter_userid: str, invitee_userid: str, room_id: str
) -> bool:
"""Checks if a given user may send an invite """Checks if a given user may send an invite
If this method returns false, the invite will be rejected. If this method returns false, the invite will be rejected.
Args: Args:
userid (string): The sender's user ID inviter_userid: The user ID of the sender of the invitation
invitee_userid: The user ID targeted in the invitation
room_id: The room ID
Returns: Returns:
bool: True if the user may send an invite, otherwise False True if the user may send an invite, otherwise False
""" """
if self.spam_checker is None: if self.spam_checker is None:
return True return True
@ -77,50 +85,50 @@ class SpamChecker(object):
inviter_userid, invitee_userid, room_id inviter_userid, invitee_userid, room_id
) )
def user_may_create_room(self, userid): def user_may_create_room(self, userid: str) -> bool:
"""Checks if a given user may create a room """Checks if a given user may create a room
If this method returns false, the creation request will be rejected. If this method returns false, the creation request will be rejected.
Args: Args:
userid (string): The sender's user ID userid: The ID of the user attempting to create a room
Returns: Returns:
bool: True if the user may create a room, otherwise False True if the user may create a room, otherwise False
""" """
if self.spam_checker is None: if self.spam_checker is None:
return True return True
return self.spam_checker.user_may_create_room(userid) return self.spam_checker.user_may_create_room(userid)
def user_may_create_room_alias(self, userid, room_alias): def user_may_create_room_alias(self, userid: str, room_alias: str) -> bool:
"""Checks if a given user may create a room alias """Checks if a given user may create a room alias
If this method returns false, the association request will be rejected. If this method returns false, the association request will be rejected.
Args: Args:
userid (string): The sender's user ID userid: The ID of the user attempting to create a room alias
room_alias (string): The alias to be created room_alias: The alias to be created
Returns: Returns:
bool: True if the user may create a room alias, otherwise False True if the user may create a room alias, otherwise False
""" """
if self.spam_checker is None: if self.spam_checker is None:
return True return True
return self.spam_checker.user_may_create_room_alias(userid, room_alias) return self.spam_checker.user_may_create_room_alias(userid, room_alias)
def user_may_publish_room(self, userid, room_id): def user_may_publish_room(self, userid: str, room_id: str) -> bool:
"""Checks if a given user may publish a room to the directory """Checks if a given user may publish a room to the directory
If this method returns false, the publish request will be rejected. If this method returns false, the publish request will be rejected.
Args: Args:
userid (string): The sender's user ID userid: The user ID attempting to publish the room
room_id (string): The ID of the room that would be published room_id: The ID of the room that would be published
Returns: Returns:
bool: True if the user may publish the room, otherwise False True if the user may publish the room, otherwise False
""" """
if self.spam_checker is None: if self.spam_checker is None:
return True return True

View file

@ -18,6 +18,10 @@ from twisted.internet import defer
from synapse.storage.state import StateFilter from synapse.storage.state import StateFilter
MYPY = False
if MYPY:
import synapse.server
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -26,18 +30,18 @@ class SpamCheckerApi(object):
access to rooms and other relevant information. access to rooms and other relevant information.
""" """
def __init__(self, hs): def __init__(self, hs: "synapse.server.HomeServer"):
self.hs = hs self.hs = hs
self._store = hs.get_datastore() self._store = hs.get_datastore()
@defer.inlineCallbacks @defer.inlineCallbacks
def get_state_events_in_room(self, room_id, types): def get_state_events_in_room(self, room_id: str, types: tuple) -> defer.Deferred:
"""Gets state events for the given room. """Gets state events for the given room.
Args: Args:
room_id (string): The room ID to get state events in. room_id: The room ID to get state events in.
types (tuple): The event type and state key (using None types: The event type and state key (using None
to represent 'any') of the room state to acquire. to represent 'any') of the room state to acquire.
Returns: Returns:

View file

@ -179,6 +179,7 @@ extras = all
commands = mypy \ commands = mypy \
synapse/api \ synapse/api \
synapse/config/ \ synapse/config/ \
synapse/events/spamcheck.py \
synapse/federation/sender \ synapse/federation/sender \
synapse/federation/transport \ synapse/federation/transport \
synapse/handlers/sync.py \ synapse/handlers/sync.py \