WebUI.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python
  2. import json
  3. import requests
  4. import sys
  5. from json import JSONEncoder
  6. from requests.adapters import HTTPAdapter
  7. from requests.packages.urllib3.util.retry import Retry
  8. from requests.structures import CaseInsensitiveDict
  9. from aman.config.Server import Server
  10. class InboundEncoder(JSONEncoder):
  11. def default(self, o):
  12. pta = str(o.PlannedArrivalTime)
  13. delimiter = pta.find('.')
  14. if -1 == delimiter:
  15. delimiter = pta.find('+')
  16. return { 'callsign' : o.Callsign, 'runway' : o.PlannedRunway.Name, 'pta' : pta[0:delimiter] }
  17. class WebUI:
  18. def __init__(self):
  19. self.Config = None
  20. self.Aman = None
  21. def __del__(self):
  22. self.release()
  23. def acquire(self, config : Server, aman):
  24. self.Config = config
  25. self.Aman = aman
  26. def release(self):
  27. return
  28. def createSession():
  29. # prepare the session
  30. session = requests.Session()
  31. retry = Retry(total=1, read=1, connect=1)
  32. adapter = HTTPAdapter(max_retries=retry)
  33. session.mount('http://', adapter)
  34. session.mount('https://', adapter)
  35. return session
  36. def requestConfiguration(self, airport):
  37. return
  38. def sendSequence(self, airport, inbounds):
  39. # prepare the HTTP header and session
  40. headers = CaseInsensitiveDict()
  41. headers['Accept'] = 'application/json'
  42. headers['Content-Type'] = 'application/json'
  43. session = WebUI.createSession()
  44. # prepare the relevant information
  45. url = self.Config.WebUiUrl + self.Config.WebUiSequenceNotification
  46. data = json.dumps({ 'airport': airport, 'sequence': inbounds }, ensure_ascii=True, cls=InboundEncoder)
  47. # send to the server
  48. try:
  49. response = session.patch(url, headers=headers, data=data, timeout=2)
  50. except requests.exceptions.ConnectTimeout:
  51. return