Skip to content
Snippets Groups Projects
Unverified Commit 10027c80 authored by Patrick Cloke's avatar Patrick Cloke Committed by GitHub
Browse files

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

Add typing information to the spam checker modules.
parent 32873efa
No related branches found
No related tags found
No related merge requests found
Add type hints to the spam checker module.
......@@ -19,9 +19,13 @@ from typing import Dict
from synapse.spam_checker_api import SpamCheckerApi
MYPY = False
if MYPY:
import synapse.server
class SpamChecker(object):
def __init__(self, hs):
def __init__(self, hs: "synapse.server.HomeServer"):
self.spam_checker = None
module = None
......@@ -41,7 +45,7 @@ class SpamChecker(object):
else:
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.
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.
Args:
event (synapse.events.EventBase): the event to be checked
event: the event to be checked
Returns:
bool: True if the event is spammy.
True if the event is spammy.
"""
if self.spam_checker is None:
return False
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
If this method returns false, the invite will be rejected.
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:
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:
return True
......@@ -77,50 +85,50 @@ class SpamChecker(object):
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
If this method returns false, the creation request will be rejected.
Args:
userid (string): The sender's user ID
userid: The ID of the user attempting to create a room
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:
return True
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
If this method returns false, the association request will be rejected.
Args:
userid (string): The sender's user ID
room_alias (string): The alias to be created
userid: The ID of the user attempting to create a room alias
room_alias: The alias to be created
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:
return True
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
If this method returns false, the publish request will be rejected.
Args:
userid (string): The sender's user ID
room_id (string): The ID of the room that would be published
userid: The user ID attempting to publish the room
room_id: The ID of the room that would be published
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:
return True
......
......@@ -18,6 +18,10 @@ from twisted.internet import defer
from synapse.storage.state import StateFilter
MYPY = False
if MYPY:
import synapse.server
logger = logging.getLogger(__name__)
......@@ -26,18 +30,18 @@ class SpamCheckerApi(object):
access to rooms and other relevant information.
"""
def __init__(self, hs):
def __init__(self, hs: "synapse.server.HomeServer"):
self.hs = hs
self._store = hs.get_datastore()
@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.
Args:
room_id (string): The room ID to get state events in.
types (tuple): The event type and state key (using None
room_id: The room ID to get state events in.
types: The event type and state key (using None
to represent 'any') of the room state to acquire.
Returns:
......
......@@ -179,6 +179,7 @@ extras = all
commands = mypy \
synapse/api \
synapse/config/ \
synapse/events/spamcheck.py \
synapse/federation/sender \
synapse/federation/transport \
synapse/handlers/sync.py \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment