mirror of https://gitlab.com/litecord/litecord.git
litecord.schemas: add better docstring for validate()
This commit is contained in:
parent
d1c0a7aa3c
commit
970b4b8692
|
|
@ -49,7 +49,8 @@ EMOJO_MENTION = re.compile(r'<:(\.+):(\d+)>', re.A | re.M)
|
||||||
ANIMOJI_MENTION = re.compile(r'<a:(\.+):(\d+)>', re.A | re.M)
|
ANIMOJI_MENTION = re.compile(r'<a:(\.+):(\d+)>', re.A | re.M)
|
||||||
|
|
||||||
|
|
||||||
def _in_enum(enum, value: int):
|
def _in_enum(enum, value) -> bool:
|
||||||
|
"""Return if a given value is in the enum."""
|
||||||
try:
|
try:
|
||||||
enum(value)
|
enum(value)
|
||||||
return True
|
return True
|
||||||
|
|
@ -58,6 +59,7 @@ def _in_enum(enum, value: int):
|
||||||
|
|
||||||
|
|
||||||
class LitecordValidator(Validator):
|
class LitecordValidator(Validator):
|
||||||
|
"""Main validator class for Litecord, containing custom types."""
|
||||||
def _validate_type_username(self, value: str) -> bool:
|
def _validate_type_username(self, value: str) -> bool:
|
||||||
"""Validate against the username regex."""
|
"""Validate against the username regex."""
|
||||||
return bool(USERNAME_REGEX.match(value))
|
return bool(USERNAME_REGEX.match(value))
|
||||||
|
|
@ -88,6 +90,10 @@ class LitecordValidator(Validator):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _validate_type_voice_region(self, value: str) -> bool:
|
def _validate_type_voice_region(self, value: str) -> bool:
|
||||||
|
# TODO: call voice manager for regions instead of hardcoding
|
||||||
|
|
||||||
|
# I'm sure the context would be there at least in a basic level, so
|
||||||
|
# we can access the app.
|
||||||
return value.lower() in ('brazil', 'us-east', 'us-west',
|
return value.lower() in ('brazil', 'us-east', 'us-west',
|
||||||
'us-south', 'russia')
|
'us-south', 'russia')
|
||||||
|
|
||||||
|
|
@ -118,6 +124,7 @@ class LitecordValidator(Validator):
|
||||||
except (TypeError, ValueError):
|
except (TypeError, ValueError):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# nobody is allowed to use the INCOMING and OUTGOING rel types
|
||||||
return val in (RelationshipType.FRIEND.value,
|
return val in (RelationshipType.FRIEND.value,
|
||||||
RelationshipType.BLOCK.value)
|
RelationshipType.BLOCK.value)
|
||||||
|
|
||||||
|
|
@ -148,8 +155,18 @@ class LitecordValidator(Validator):
|
||||||
|
|
||||||
def validate(reqjson: Union[Dict, List], schema: Dict,
|
def validate(reqjson: Union[Dict, List], schema: Dict,
|
||||||
raise_err: bool = True) -> Dict:
|
raise_err: bool = True) -> Dict:
|
||||||
"""Validate a given document (user-input) and give
|
"""Validate the given user-given data against a schema, giving the
|
||||||
the correct document as a result.
|
"correct" version of the document, with all defaults applied.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
reqjson:
|
||||||
|
The input data
|
||||||
|
schema:
|
||||||
|
The schema to validate reqjson against
|
||||||
|
raise_err:
|
||||||
|
If we should raise a BadRequest error when the validation
|
||||||
|
fails. Default is true.
|
||||||
"""
|
"""
|
||||||
validator = LitecordValidator(schema)
|
validator = LitecordValidator(schema)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue