Registrar.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from models.User import User, UserSchema, add_new_user
  2. class Registrar(object):
  3. def __init__(self, username=None, pub_key=None, *args, **kwargs):
  4. self.username = username
  5. self.pub_key = pub_key
  6. def get_serializable(self):
  7. return self.__dict__
  8. def valid_input(self):
  9. return self.username is not None and self.pub_key is not None
  10. def persist(self):
  11. try:
  12. user = User(username=self.username,pub_key=self.pub_key)
  13. add_new_user(user)
  14. schema = UserSchema()
  15. return schema.dump(user)
  16. except Exception as exception:
  17. return FailedPersistenceHandler(
  18. "Error: failed to persist", self.username, self.pub_key
  19. ).get_serializable()
  20. def register(self):
  21. return (
  22. InvalidInputHandler(
  23. "Error: invalid input", self.username, self.pub_key
  24. ).get_serializable()
  25. if not self.valid_input()
  26. else self.persist()
  27. )
  28. class InvalidInputHandler:
  29. def __init__(self, status, username=None, pub_key=None):
  30. self.status = status
  31. self.username = "Missing username" if username is None else username
  32. self.pub_key = "Missing pub_key" if pub_key is None else pub_key
  33. def get_serializable(self):
  34. return self.__dict__
  35. # Stub for current lack of a database.
  36. class FailedPersistenceHandler:
  37. def __init__(self, status, username=None, pub_key=None):
  38. self.status = status
  39. self.username = "username..." if username is None else username
  40. self.pub_key = "pub_key..." if pub_key is None else pub_key
  41. def get_serializable(self):
  42. return self.__dict__