diff --git a/src/main.py b/src/main.py index 726f3b5d60d4eab84aaf76f36cbdc6be836acb1a..1302707e960071f5e1697c86dc7f871fe2420a87 100644 --- a/src/main.py +++ b/src/main.py @@ -1,6 +1,7 @@ import json import uvicorn +from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger from fastapi import FastAPI from starlette.responses import RedirectResponse, JSONResponse @@ -10,14 +11,16 @@ from logic.databaseNew import Models from logic.databaseNew.Database import engine from routers import DeviceRouter +LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME) + # create database tables Models.Base.metadata.create_all(bind=engine) with open('version.json', 'r', encoding='UTF-8') as f: - versionInfo = json.load(f)['version'] + VERSION = json.load(f)['version'] app = FastAPI(title=Constants.APP_NAME, - version=versionInfo['name'], + version=VERSION['name'], description='The StorageLeaf API') app.include_router(DeviceRouter.router) @@ -29,7 +32,26 @@ async def root(): @app.get('/version') async def version(): - return JSONResponse(content=versionInfo) + return JSONResponse(content=VERSION) + if __name__ == '__main__': - uvicorn.run(app, host=SETTINGS['server']['listen'], port=SETTINGS['server']['port']) + serverSettings = SETTINGS['server'] + protocol = 'https' if serverSettings['useSSL'] else 'http' + + LOGGER.info(('{name} {versionName}({versionCode}) - ' + 'Listening on {protocol}://{listen}:{port}...'.format(name=Constants.APP_NAME, + versionName=VERSION['name'], + versionCode=VERSION['code'], + protocol=protocol, + listen=serverSettings['listen'], + port=serverSettings['port']))) + + if serverSettings['useSSL']: + uvicorn.run(app, host=serverSettings['listen'], port=serverSettings['port'], + ssl_keyfile=serverSettings['keyfile'], + ssl_certfile=serverSettings['certfile']) + else: + uvicorn.run(app, host=serverSettings['listen'], port=serverSettings['port']) + +