1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """
- Piket server, handles events generated by the client.
- """
- from flask import Flask, jsonify, abort, request
- app = Flask("piket_server")
- @app.route("/ping")
- def ping() -> None:
- """ Return a status ping. """
- return "Pong"
- PRESET_NAMES = [
- "Maarten",
- "Knoepie Draggelsturf",
- "Teddy Veenlijk",
- "Chris Kraslot",
- "Knibbe Tjakkomans",
- "Foek Lammenschaap",
- ]
- PEOPLE = {index: {"name": name, "count": 0} for index, name in enumerate(PRESET_NAMES)}
- NEXT_ID = len(PEOPLE)
- @app.route("/people", methods=["GET"])
- def get_people():
- """ Return a list of currently known people. """
- return jsonify(people=PEOPLE)
- @app.route("/people/<int:person_id>", methods=["GET"])
- def get_person(person_id: int):
- person = PEOPLE.get(person_id)
- if not person:
- abort(404)
- return jsonify(person=person)
- @app.route("/people", methods=["POST"])
- def add_person():
- """
- Add a new person.
- Required parameters:
- - name (str)
- """
- global NEXT_ID
- data = request.get_json()
- if not data:
- abort(400)
- name = data.get("name")
- if not name:
- abort(400)
- person = {"name": name, "count": 0}
- PEOPLE[NEXT_ID] = person
- person["id"] = NEXT_ID
- NEXT_ID += 1
- return jsonify(person=person)
- @app.route("/people/<int:person_id>/add_consumption", methods=["POST"])
- def add_consumption(person_id: int):
- person = PEOPLE.get(person_id)
- if not person:
- abort(404)
- increment = int(request.form.get("amount", 1))
- person["count"] += increment
- return jsonify(person=person)
|