From 6350934e6532d943c87dad65af96e69f939842b8 Mon Sep 17 00:00:00 2001 From: Oskar Date: Mon, 7 Dec 2020 20:31:03 +0100 Subject: [PATCH] Move backend to this repo and update some stuff --- .gitignore | 4 ++++ Makefile | 11 ---------- db/app.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 .gitignore delete mode 100644 Makefile create mode 100644 db/app.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9116c8e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +__pycache__/ +*.log +*.db +*.json diff --git a/Makefile b/Makefile deleted file mode 100644 index 61081b2..0000000 --- a/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -NAME = fs-quiz-tool - -HTML = /var/www/html - -all: run - -run: - cd src && python3 -m http.server 8000 - -install: - sudo cp src/* $(HTML)/$(NAME)/ diff --git a/db/app.py b/db/app.py new file mode 100644 index 0000000..e975e4d --- /dev/null +++ b/db/app.py @@ -0,0 +1,64 @@ +from flask import Flask, request, Response +import json +import string +import random +import atexit + +app = Flask(__name__) + +filename = 'db.json' +id_length = 32 + +data = {} + + +def startup(): + global data + try: + fd = open(filename) + data = json.load(fd) + except FileNotFoundError: + pass + + +@app.after_request +def add_headers(response): + response.headers['Access-Control-Allow-Origin'] = '*' + response.headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS' + return response + + +@app.route('/', methods = ['GET']) +def get(id): + if id in data: + return data[id] + else: + return 'Error: Not found', 404 + + +def generateRandomString(): + return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(id_length)) + +@app.route('/', methods = ['POST']) +def post(): + id = generateRandomString() + data[id] = request.data.decode('UTF-8') + return id, 201 + + +def dumpDB(): + if len(data) == 0: + return + + fd = open(filename, 'w+') + try: + json.dump(data, fd) + finally: + fd.close() + + +startup() +atexit.register(dumpDB) + +if __name__ == "__main__": + app.run(host='0.0.0.0')