summary refs log tree commit diff
path: root/synapse/config/validators.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/config/validators.py')
-rw-r--r--synapse/config/validators.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/synapse/config/validators.py b/synapse/config/validators.py
new file mode 100644

index 0000000000..2faae0cf4a --- /dev/null +++ b/synapse/config/validators.py
@@ -0,0 +1,31 @@ +import re +from typing import Type + +from pydantic import BaseModel +from pydantic.fields import ModelField + + +def string_length_between(lower: int, upper: int): + def validator(cls: Type[BaseModel], value: str, field: ModelField) -> str: + print(f"validate {lower=} {upper=} {value=}") + if lower <= len(value) <= upper: + print("ok") + return value + print("bad") + raise ValueError( + f"{field.name} must be between {lower} and {upper} characters long" + ) + + return validator + + +def string_contains_characters(charset: str): + def validator(cls: Type[BaseModel], value: str, field: ModelField) -> str: + pattern = f"^[{charset}]*$" + if re.match(pattern, value): + return value + raise ValueError( + f"{field.name} must be only contain the characters {charset}" + ) + + return validator