mirror of
https://github.com/FAUSheppy/atlantis-event-dispatcher
synced 2025-12-06 06:21:36 +01:00
feat: webhook support
This commit is contained in:
@@ -123,6 +123,41 @@ def get_dispatch_status():
|
|||||||
else:
|
else:
|
||||||
return ("Waiting for dispatch", 200)
|
return ("Waiting for dispatch", 200)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/webhooks', methods=["GET", "POST", "DELETE"])
|
||||||
|
def webhooks():
|
||||||
|
|
||||||
|
# check static access token #
|
||||||
|
token = flask.request.args.get("token")
|
||||||
|
if token != app.config["SETTINGS_ACCESS_TOKEN"]:
|
||||||
|
return ("SETTINGS_ACCESS_TOKEN incorrect. Refusing to access webhooks", 401)
|
||||||
|
|
||||||
|
user = flask.request.args.get("user")
|
||||||
|
if not user:
|
||||||
|
return ("Missing user paramter in URL", 500)
|
||||||
|
|
||||||
|
if flask.request.method == "POST":
|
||||||
|
posted = WebHookPaths(username=user, path=secrets.token_urlsafe(20))
|
||||||
|
db.session.merge(posted)
|
||||||
|
db.session.commit()
|
||||||
|
return ("", 204)
|
||||||
|
elif flask.request.method == "GET":
|
||||||
|
webhooks = db.session.query(WebHookPaths).filter(WebHookPaths.username==user).all()
|
||||||
|
if not webhooks:
|
||||||
|
return flask.jsonify([])
|
||||||
|
else:
|
||||||
|
return flask.jsonify([ wh.path for wh in webhooks])
|
||||||
|
elif flask.request.method == "DELETE":
|
||||||
|
path = flask.request.json["path"]
|
||||||
|
webhook_to_be_deleted = db.session.query(WebHookPaths).filter(WebHookPaths.username==user,
|
||||||
|
WebHookPaths.path==path).first()
|
||||||
|
if not webhook_to_be_deleted:
|
||||||
|
return ("Webhook to be deleted was not found ({}, {})".format(user, path), 404)
|
||||||
|
else:
|
||||||
|
db.session.delete(webhook_to_be_deleted)
|
||||||
|
db.session.commit()
|
||||||
|
return ("", 204)
|
||||||
|
|
||||||
@app.route('/settings', methods=["GET", "POST"])
|
@app.route('/settings', methods=["GET", "POST"])
|
||||||
def settings():
|
def settings():
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user