web.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import os
  2. import json
  3. from http.server import BaseHTTPRequestHandler, HTTPServer
  4. from qmanager import qManager
  5. # Port on which server will run.
  6. PORT = 8080
  7. class HTTPRequestHandler(BaseHTTPRequestHandler):
  8. q = qManager()
  9. def do_GET(self):
  10. self.send_200()
  11. out=json.dumps(self.q.task_status())
  12. #self.wfile.write(bytes()) #fileHandle.read().encode()
  13. self.wfile.write(bytes(out,"utf-8")) #fileHandle.read().encode()
  14. def send_400(self):
  15. self.send_response(400, 'NOT OK')
  16. self.send_header('Content-type', 'text/json')
  17. self.end_headers()
  18. def send_200(self):
  19. self.send_response(200)
  20. self.send_header('Content-type', 'text/json')
  21. self.end_headers()
  22. def do_POST(self):
  23. # Check if path is there.
  24. if self.path:
  25. length = self.headers['content-length']
  26. if length is None:
  27. self.send_400()
  28. return
  29. data = self.rfile.read(int(length))
  30. data = data.decode("utf-8")
  31. try:
  32. d=json.loads(data)
  33. except:
  34. print("no json")
  35. self.send_400()
  36. return
  37. if not "type" in d or not "book" in d:
  38. self.send_400()
  39. return
  40. if d["type"].upper()=="SEARCH":
  41. self.q.new_search(d["book"],d["extension"])
  42. self.send_200()
  43. return
  44. if d["type"]=="BOOK":
  45. self.q.new_dl(d["book"])
  46. self.send_200()
  47. return
  48. if __name__ == '__main__':
  49. HTTPDeamon = HTTPServer(('', PORT), HTTPRequestHandler)
  50. print("Listening at port", PORT)
  51. try:
  52. HTTPDeamon.serve_forever()
  53. except KeyboardInterrupt:
  54. pass
  55. HTTPDeamon.server_close()
  56. print("Server stopped")