summaryrefslogtreecommitdiff
path: root/be/app.py
blob: 399ce9767f9df3794cff6f6cfcc61fc36ebd91f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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 ""