This repository has been archived by the owner on Jan 20, 2024. It is now read-only.
/
app.py
51 lines (43 loc) · 1.76 KB
/
app.py
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
from json import dumps
from flask import Flask, request
from flask_cors import CORS
from project_amber.config import config
from project_amber.db import db
from project_amber.errors import HTTPError
from project_amber.helpers import handleLogin, middleware as checkRequest
from project_amber.handlers.auth import login, logout
from project_amber.handlers.session import handle_session_req, \
handle_session_id_req
from project_amber.handlers.task import handle_task_id_request, \
handle_task_request
from project_amber.handlers.users import signup
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = config["database"]
db.init_app(app)
CORS(app, resources={r"/*": {"origins": config["domain"]}})
@app.before_request
def middleware():
params = checkRequest()
if params.authenticated:
user = handleLogin()
# add a global variable that every function will use from now on
request.user = user
app.add_url_rule("/api/login", "login", login, methods=["POST"])
app.add_url_rule("/api/logout", "logout", logout, methods=["POST"])
app.add_url_rule("/api/task", "task", handle_task_request, \
methods=["GET", "POST"])
app.add_url_rule("/api/task/<task_id>", "task_id", handle_task_id_request, \
methods=["GET", "PATCH", "DELETE"])
app.add_url_rule("/api/session", "session", handle_session_req, methods=["GET"])
app.add_url_rule("/api/session/<session_id>", "session_id", \
handle_session_id_req, methods=["GET", "DELETE"])
if config["allow_signup"]:
app.add_url_rule("/api/signup", "signup", signup, methods=["POST"])
@app.before_first_request
def create_tables():
db.create_all() # create all tables on first run
@app.errorhandler(HTTPError)
def handle_HTTP_errors(e):
return dumps({
"message": e.message
}), e.code