Add type hints to the spam check module (#6915)
Add typing information to the spam checker modules.
This commit is contained in:
parent
32873efa87
commit
10027c80b0
|
@ -0,0 +1 @@
|
||||||
|
Add type hints to the spam checker module.
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
1
tox.ini
1
tox.ini
|
@ -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 \
|
||||||
|
|
Loading…
Reference in New Issue