ServerOperations.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import socket
  2. from GatewayServer import *
  3. from MediaServer import *
  4. from Logger import *
  5. from HttpServer import *
  6. class ServerOperations():
  7. '''
  8. Handles all Discord server interactions (HTTP, Websocket, UDP)
  9. '''
  10. def __init__(self,
  11. user_email,
  12. user_password,
  13. proxy_host,
  14. proxy_port,
  15. video=True):
  16. self.__proxy_host = proxy_host
  17. self.__proxy_port = proxy_port
  18. self.__http_server = HttpServer(user_email, user_password)
  19. self.__gateway_server = GatewayServer(self.__proxy_host, self.__proxy_port)
  20. self.__media_server = None
  21. self.__socket = sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  22. self.__channel_id = None
  23. self.__video = video
  24. self.__http_token = self.__http_server.GetToken()
  25. self.__media_token = None
  26. self.__gateway_server.Connect(self.__http_token)
  27. self.__server_id = None
  28. self.__user_id = None
  29. self.__session_id = None
  30. def CallChannel(self, channel_id):
  31. self.__channel_id = channel_id
  32. token = self.__gateway_server.RequestMediaToken(self.__channel_id)
  33. endpoint = self.__gateway_server.GetEndpoint()
  34. self.__server_id = self.__gateway_server.GetServerId()
  35. self.__user_id = self.__gateway_server.GetUserId()
  36. self.__session_id = self.__gateway_server.GetSessionId()
  37. self.__media_server = MediaServer(endpoint, self.__server_id, self.__user_id, self.__session_id, self.__proxy_host, self.__proxy_port, token)
  38. self.__media_server.StartStream()
  39. def SendCallAudio(self, msg):
  40. self.__media_server.SendCallAudio(msg)
  41. def SendCallStatus(self, msg):
  42. self.__media_server.SendCallStatus(msg)
  43. def SendImage(self, data):
  44. self.__gateway_server.StartScreenShare()
  45. while True:
  46. self.__media_server.SendScreenImage(data)