katrix_pg.py 1022 B

1234567891011121314151617181920212223242526272829303132333435
  1. from flask import Flask # <3?
  2. from flask import request
  3. from flask import abort
  4. from flask import g
  5. import requests
  6. import sys
  7. app = Flask(__name__)
  8. LOG_FILE = open("log", "at")
  9. def send_request(pushkey, data=None):
  10. if not pushkey.startswith("https://push.kaiostech.com:8443/wpush"):
  11. print("pushkey is", pushkey, "ignoring...", file=LOG_FILE)
  12. return False
  13. try:
  14. response = requests.post(pushkey, data=data)
  15. except:
  16. return False
  17. if not response.ok:
  18. print(response.text, file=LOG_FILE)
  19. return False if response.ok else pushkey
  20. @app.route("/_matrix/push/v1/notify", methods=("POST", ))
  21. def notify():
  22. if not request.is_json:
  23. print("Request is not JSON:", request, file=LOGFILE)
  24. abort(404)
  25. pushkeys = tuple(map(
  26. lambda device: device["pushkey"],
  27. request.json["notification"]["devices"]
  28. ))
  29. rejected = filter(None, map(send_request, pushkeys, (request.json, ) * len(pushkeys)))
  30. return {"rejected": list(rejected)}