summaryrefslogtreecommitdiff
path: root/be/app.py
diff options
context:
space:
mode:
authorakiyamn2023-11-02 22:29:09 +1100
committerakiyamn2023-11-02 22:29:09 +1100
commit5461621c421130bd359efff4a10c3e1ba330e85c (patch)
tree32ab149b5993b89c42a46449c23c102858faa3a2 /be/app.py
downloadjacbday-5461621c421130bd359efff4a10c3e1ba330e85c.tar.gz
jacbday-5461621c421130bd359efff4a10c3e1ba330e85c.zip
Init
Diffstat (limited to 'be/app.py')
-rw-r--r--be/app.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/be/app.py b/be/app.py
new file mode 100644
index 0000000..399ce97
--- /dev/null
+++ b/be/app.py
@@ -0,0 +1,65 @@
+from flask import Flask, request
+from flask_cors import CORS
+from werkzeug.middleware.proxy_fix import ProxyFix
+import points
+
+app = Flask(__name__)
+
+app.wsgi_app = ProxyFix(
+ app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1
+)
+
+CORS(app)
+
+@app.route("/")
+def ping():
+ return "🀄"
+
+TEAMS = ["green", "purple"]
+points.init_databases(TEAMS)
+
+def sanitise(string):
+ return string.lower()
+
+@app.route('/increment/<team>/<username>', methods=["POST"])
+def increment_user_points(team, username):
+ team = team.lower()
+ multiplier = points.get_multiplier(team)
+ return {"points": points.increment_points(sanitise(team), sanitise(username), float(multiplier))}
+
+@app.route('/points/<team>/<username>', methods=["GET"])
+def user_points(team, username):
+ return {"points": points.get_user_points(sanitise(team), sanitise(username))}
+
+@app.route('/points/<team>/', methods=["GET"])
+def get_team_points(team):
+ return {"points": points.get_team_points(sanitise(team))}
+
+@app.route("/leaderboard/", methods=["GET"])
+def get_leaderboard():
+ return points.get_leaderboard()
+
+@app.route("/multiplier/<team>", methods=["GET", "POST"])
+def multiplier(team):
+ if request.method == "GET":
+ return {"multiplier": points.get_multiplier(sanitise(team))}
+ else:
+ data = request.get_json()
+ if "multiplier" in data:
+ return {"multiplier": points.set_multiplier(sanitise(team), data["multiplier"])}
+ return "", 400
+
+@app.route("/prompt/", methods=["GET", "POST"])
+def prompt():
+ if request.method == "GET":
+ return {"prompt": points.get_prompt()}
+ else:
+ data = request.get_json()
+ if "prompt" in data:
+ return {"prompt": points.set_prompt(data["prompt"])}
+ return "", 400
+
+@app.route("/clear/", methods=["POST"])
+def clear():
+ points.init_databases(TEAMS, clear=True)
+ return ""