from flask import Flask, request import sys import json import string import random import atexit app = Flask(__name__) filename = sys.argv[1] if len(sys.argv) > 1 else 'db.json' id_length = 16 data = {} def startup(): global data try: fd = open(filename) data = json.load(fd) except FileNotFoundError: pass @app.route('/db/', methods = ['GET']) def get(id): return data[id] if id in data else ('Error: Not found', 404) def generateRandomString(): return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(id_length)) def generateNewKey(): id = generateRandomString() while id in data: id = generateRandomString() return id @app.route('/db', methods = ['POST']) def post(): id = generateNewKey() data[id] = request.data.decode('UTF-8') return id, 201 def dumpDB(): if len(data) == 0: return try: fd = open(filename, 'w+') json.dump(data, fd) finally: fd.close() startup() atexit.register(dumpDB)