Newer
Older
from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger
from starlette.responses import RedirectResponse, JSONResponse
from logic.databaseNew import Models
from logic.databaseNew.Database import engine
from routers import DeviceRouter, SensorRouter, MeasurementRouter
LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME)
Models.Base.metadata.create_all(bind=engine)
with open('version.json', 'r', encoding='UTF-8') as f:
description='The StorageLeaf API',
servers=[{'url': SETTINGS['api']['url'], 'description': f'{Constants.APP_NAME} API'}])
app.include_router(DeviceRouter.router)
app.include_router(SensorRouter.router)
app.include_router(MeasurementRouter.router)
async def root():
return RedirectResponse(url='/docs')
@app.get('/version')
async def version():
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'])