Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.57 KB | None | 0 0
  1. import sys
  2. import datetime
  3. import json
  4. import BaseHTTPServer
  5. import SocketServer
  6. from threading import Thread
  7. from collections import OrderedDict
  8. from System.Collections.Generic import List
  9.  
  10.  
  11. ScriptName = "StreamAvatarsCurrency"
  12. Website = "https://www.streamavatars.com"
  13. Description = "Allow Stream Avatars to edit your Streamlabs currency"
  14. Creator = "Travis Miller"
  15. Version = "1.0.0.0"
  16.  
  17. global Handler
  18. global httpd
  19. global thread
  20.  
  21. class PointsHTTPServer(BaseHTTPServer.BaseHTTPRequestHandler):
  22.   def do_GET(self):
  23.     self.send_response(200)
  24.     self.send_header("Content-Type", "text/html")
  25.     self.end_headers()
  26.     self.wfile.write("OK")
  27.  
  28.   def do_POST(self):
  29.     global ScriptName
  30.     response_status = 500
  31.     response_body = "{}"
  32.     try:
  33.       request_body = self.rfile.read(int(self.headers.getheader('content-length')))
  34.       message = json.loads(request_body)
  35.       reply = message_received(message)
  36.       response_status = reply["status"]
  37.       response_body = json.dumps(reply["data"])
  38.     except Exception as ex:
  39.       Parent.Log(ScriptName, str(ex))
  40.  
  41.       response_status = 500
  42.       response_body = "{}"
  43.  
  44.     try:
  45.       self.send_response(response_status)
  46.       self.send_header("Content-Type", "application/json")
  47.       self.end_headers()
  48.       self.wfile.write(response_body)
  49.       self.wfile.close()
  50.     except Exception as ex:
  51.       Parent.Log(ScriptName, str(ex))
  52.     return
  53.  
  54. def http_server_thread():
  55.   global httpd
  56.   httpd.serve_forever()
  57.   return
  58.  
  59. def Init():
  60.   global Handler
  61.   global httpd
  62.   global thread
  63.   Handler = PointsHTTPServer
  64.   httpd = SocketServer.TCPServer(("127.0.0.1", 6779), Handler)
  65.  
  66.   thread = Thread(target = http_server_thread)
  67.   thread.start()
  68.   return
  69.  
  70. def Execute(data):
  71.   return
  72.  
  73. def Tick():
  74.   return
  75.  
  76. def ReloadSettings(jsonData):
  77.   return
  78.  
  79. def Unload():
  80.   global httpd
  81.   httpd.socket.close()
  82.   httpd.shutdown()
  83.   return
  84.  
  85. def ScriptToggled(state):
  86.   if state == True:
  87.     Unload()
  88.     Init()
  89.   else:
  90.     Unload()
  91.   return
  92.  
  93. def message_received(message):
  94.   points = 0
  95.   status = 200
  96.   response = None
  97.   if message["method"] == "deposit":
  98.     success = Parent.AddPoints(message["username"], message["username"], message["points"])
  99.     points = Parent.GetPoints(message["username"])
  100.     if points < 0:
  101.       success = Parent.AddPoints(message["username"], message["username"], -points)
  102.       points = Parent.GetPoints(message["username"])
  103.     if success == False:
  104.       status = 500
  105.  
  106.   elif message["method"] == "withdraw":
  107.     success = Parent.RemovePoints(message["username"], message["username"], message["points"])
  108.     points = Parent.GetPoints(message["username"])
  109.     if success == False:
  110.       status = 500
  111.  
  112.   elif message["method"] == "set":
  113.     points = message["points"] - Parent.GetPoints(message["username"])
  114.     success = Parent.AddPoints(message["username"], message["username"], points)
  115.     points = Parent.GetPoints(message["username"])
  116.     if success == False:
  117.       status = 500
  118.  
  119.   elif message["method"] == "get":
  120.     points = Parent.GetPoints(message["username"])
  121.  
  122.   elif message["method"] == "top_points":
  123.     topX = Parent.GetTopCurrency(message["limit"])
  124.     streamingService = Parent.GetStreamingService()
  125.     if streamingService == "Youtube":
  126.       for k, v in topX.items():
  127.         displayName = Parent.GetDisplayName(k)
  128.         topX[displayName] = topX.pop(k)
  129.     topX = OrderedDict(sorted(topX.items(), key=lambda t: t[1], reverse = True))
  130.     response = { "status": 200, "data": topX }
  131.  
  132.   elif message["method"] == "mass_deposit":
  133.     streamingService = Parent.GetStreamingService()
  134.     if streamingService == "Youtube":
  135.       failedUsers = []
  136.       for k, v in message["deposits"].items():
  137.         success = Parent.AddPoints(k, k, v)
  138.         if success == False:
  139.           failedUsers.append(k)
  140.     else:
  141.       failedUsers = list(Parent.AddPointsAll(message["deposits"]))
  142.     if len(failedUsers) > 0:
  143.       status = 500
  144.     response = { "status": status, "data": failedUsers }
  145.  
  146.   elif message["method"] == "mass_withdraw":
  147.     failedUsers = list(Parent.RemovePointsAll(message["withdrawals"]))
  148.     if len(failedUsers) > 0:
  149.       status = 500
  150.     response = { "status": status, "data": failedUsers }
  151.  
  152.   elif message["method"] == "mass_get":
  153.     users = Parent.GetPointsAll(List[str](message["usernames"]))
  154.     users = {k: int(v) for k, v in users.items()}
  155.     response = { "status": 200, "data": users }
  156.  
  157.   if response is None:
  158.     response = { "status": status, "data": int(points) }
  159.   return response
  160.  
  161. if __name__ == "__main__":
  162.   Init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement