aboutsummaryrefslogtreecommitdiffstats
path: root/backend/routes/forms/index.py
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2020-12-21 19:39:21 +0000
committerGravatar GitHub <[email protected]>2020-12-21 19:39:21 +0000
commit443a322b553ce38d3cde67798ee3b7c19aa9fbeb (patch)
tree8118454e1861939e813d77887e7a823446fa21d1 /backend/routes/forms/index.py
parentUpdate review-policy.yml (diff)
parentMerge branch 'main' into discord-webhook (diff)
Merge pull request #39 from python-discord/discord-webhook
Diffstat (limited to 'backend/routes/forms/index.py')
-rw-r--r--backend/routes/forms/index.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/backend/routes/forms/index.py b/backend/routes/forms/index.py
index d1373e4..0e1dee8 100644
--- a/backend/routes/forms/index.py
+++ b/backend/routes/forms/index.py
@@ -6,8 +6,10 @@ from starlette.authentication import requires
from starlette.requests import Request
from starlette.responses import JSONResponse
-from backend.route import Route
+from backend.constants import Meta, WebHook
from backend.models import Form, FormList
+from backend.models.form import validate_hook_url
+from backend.route import Route
from backend.validation import ErrorMessage, OkayResponse, api
@@ -46,6 +48,20 @@ class FormsList(Route):
"""Create a new form."""
form_data = await request.json()
+ # Verify Webhook
+ try:
+ # Get url from request
+ path = (Meta.__name__.lower(), WebHook.__name__.lower(), WebHook.URL.value)
+ url = form_data[path[0]][path[1]][path[2]]
+
+ # Validate URL
+ validation = await validate_hook_url(url)
+ if validation:
+ return JSONResponse(validation.errors(), status_code=422)
+
+ except KeyError:
+ pass
+
form = Form(**form_data)
if await request.state.db.forms.find_one({"_id": form.id}):