online_chat.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from abc import ABCMeta
  2. class UserService(object):
  3. def __init__(self):
  4. self.users_by_id = {} # key: user id, value: User
  5. def add_user(self, user_id, name, pass_hash):
  6. pass
  7. def remove_user(self, user_id):
  8. pass
  9. def add_friend_request(self, from_user_id, to_user_id):
  10. pass
  11. def approve_friend_request(self, from_user_id, to_user_id):
  12. pass
  13. def reject_friend_request(self, from_user_id, to_user_id):
  14. pass
  15. class User(object):
  16. def __init__(self, user_id, name, pass_hash):
  17. self.user_id = user_id
  18. self.name = name
  19. self.pass_hash = pass_hash
  20. self.friends_by_id = {} # key: friend id, value: User
  21. self.friend_ids_to_private_chats = {} # key: friend id, value: private chats
  22. self.group_chats_by_id = {} # key: chat id, value: GroupChat
  23. self.received_friend_requests_by_friend_id = {} # key: friend id, value: AddRequest
  24. self.sent_friend_requests_by_friend_id = {} # key: friend id, value: AddRequest
  25. def message_user(self, friend_id, message):
  26. pass
  27. def message_group(self, group_id, message):
  28. pass
  29. def send_friend_request(self, friend_id):
  30. pass
  31. def receive_friend_request(self, friend_id):
  32. pass
  33. def approve_friend_request(self, friend_id):
  34. pass
  35. def reject_friend_request(self, friend_id):
  36. pass
  37. class Chat(metaclass=ABCMeta):
  38. def __init__(self, chat_id):
  39. self.chat_id = chat_id
  40. self.users = []
  41. self.messages = []
  42. class PrivateChat(Chat):
  43. def __init__(self, first_user, second_user):
  44. super(PrivateChat, self).__init__()
  45. self.users.append(first_user)
  46. self.users.append(second_user)
  47. class GroupChat(Chat):
  48. def add_user(self, user):
  49. pass
  50. def remove_user(self, user):
  51. pass
  52. class Message(object):
  53. def __init__(self, message_id, message, timestamp):
  54. self.message_id = message_id
  55. self.message = message
  56. self.timestamp = timestamp
  57. class AddRequest(object):
  58. def __init__(self, from_user_id, to_user_id, request_status, timestamp):
  59. self.from_user_id = from_user_id
  60. self.to_user_id = to_user_id
  61. self.request_status = request_status
  62. self.timestamp = timestamp
  63. class RequestStatus(Enum):
  64. UNREAD = 0
  65. READ = 1
  66. ACCEPTED = 2
  67. REJECTED = 3