From a87bc770c7cf873db8a5a79811da2f496be18633 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 16 Jan 2021 12:56:28 +0100 Subject: [PATCH] use database url from settings --- src/Dependencies.py | 5 +++-- src/Settings.py | 4 ++++ src/logic/databaseNew/Database.py | 7 +++++-- src/main.py | 8 ++------ 4 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 src/Settings.py diff --git a/src/Dependencies.py b/src/Dependencies.py index da430ca..0fe8160 100644 --- a/src/Dependencies.py +++ b/src/Dependencies.py @@ -4,6 +4,7 @@ from fastapi import Security, HTTPException from fastapi.security import APIKeyHeader from starlette.status import HTTP_403_FORBIDDEN +from Settings import SETTINGS from logic.databaseNew.Database import SessionLocal @@ -19,6 +20,6 @@ API_KEY_HEADER = APIKeyHeader(name='apiKey') async def check_api_key(apiKey: str = Security(API_KEY_HEADER)): - from main import API_KEY - if not secrets.compare_digest(API_KEY, apiKey): + expectedApiKey = SETTINGS['api']['key'] + if not secrets.compare_digest(expectedApiKey, apiKey): raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail='apiKey invalid') diff --git a/src/Settings.py b/src/Settings.py new file mode 100644 index 0000000..5b76c1d --- /dev/null +++ b/src/Settings.py @@ -0,0 +1,4 @@ +import json + +with open('../settings.json', 'r', encoding='UTF-8') as f: + SETTINGS = json.load(f) diff --git a/src/logic/databaseNew/Database.py b/src/logic/databaseNew/Database.py index 72be7a8..bec3c8d 100644 --- a/src/logic/databaseNew/Database.py +++ b/src/logic/databaseNew/Database.py @@ -2,10 +2,13 @@ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker -SQLALCHEMY_DATABASE_URL = 'sqlite:///../../storageLeaf_new.db' +from Settings import SETTINGS + +databasePath = SETTINGS['database']['databasePath'] +databaseUrl = f'sqlite:///{databasePath}' engine = create_engine( - SQLALCHEMY_DATABASE_URL, connect_args={'check_same_thread': False} + databaseUrl, connect_args={'check_same_thread': False} ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) diff --git a/src/main.py b/src/main.py index 612933a..726f3b5 100644 --- a/src/main.py +++ b/src/main.py @@ -4,6 +4,7 @@ import uvicorn from fastapi import FastAPI from starlette.responses import RedirectResponse, JSONResponse +from Settings import SETTINGS from logic import Constants from logic.databaseNew import Models from logic.databaseNew.Database import engine @@ -15,11 +16,6 @@ Models.Base.metadata.create_all(bind=engine) with open('version.json', 'r', encoding='UTF-8') as f: versionInfo = json.load(f)['version'] -with open('../settings.json', 'r', encoding='UTF-8') as f: - settings = json.load(f) - -API_KEY = settings['api']['key'] - app = FastAPI(title=Constants.APP_NAME, version=versionInfo['name'], description='The StorageLeaf API') @@ -36,4 +32,4 @@ async def version(): return JSONResponse(content=versionInfo) if __name__ == '__main__': - uvicorn.run(app, host=settings['server']['listen'], port=settings['server']['port']) + uvicorn.run(app, host=SETTINGS['server']['listen'], port=SETTINGS['server']['port']) -- GitLab