user_validator.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import enum
  2. from .user import user
  3. class user_validation_result(enum.Enum):
  4. VALID = 0
  5. NICK_TOO_SHORT = 1
  6. NICK_TOO_LONG = 2
  7. NICK_EMPTY = 3
  8. SECRET_NOT_SET = 4
  9. NICK_ALREADY_TAKEN = 5
  10. class user_validation_exception(BaseException):
  11. def __init__(self, target: user_validation_result):
  12. super().__init__("Exception when validate user: " + target.name)
  13. self.errors = target
  14. class user_validator:
  15. def __init__(self, target: user):
  16. self.__target = user.clone(target)
  17. @property
  18. def target(self) -> user:
  19. return self.__target
  20. @property
  21. def nick_validation_result(self) -> user_validation_result:
  22. return user_validator.validate_nick(self.target.nick)
  23. def validate_nick(target) -> user_validation_result:
  24. nick_length = len(target)
  25. if nick_length == 0:
  26. return user_validation_result.NICK_EMPTY
  27. if nick_length < 4:
  28. return user_validation_result.NICK_TOO_SHORT
  29. if nick_length > 20:
  30. return user_validation_result.NICK_TOO_LONG
  31. return user_validation_result.VALID
  32. @property
  33. def has_valid_nick(self) -> bool:
  34. return self.nick_validation_result == user_validation_result.VALID
  35. @property
  36. def secret_validation_result(self) -> user_validation_result:
  37. return user_validator.validate_secret(self.target.secret)
  38. def validate_secret(target) -> user_validation_result:
  39. if len(target) != 64:
  40. return user_validation_result.SECRET_NOT_SET
  41. return user_validation_result.VALID
  42. @property
  43. def has_valid_secret(self) -> bool:
  44. return self.secret_validation_result == user_validation_result.VALID
  45. @property
  46. def has_id(self) -> bool:
  47. return self.target.id is not None