[core] Add main kibicara module
This commit is contained in:
parent
ec6870d457
commit
1f8ea799f2
46
kibicara/kibicara.py
Normal file
46
kibicara/kibicara.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# Copyright (C) 2020 by Thomas Lindner <tom@dl6tom.de>
|
||||||
|
# Copyright (C) 2020 by Cathy Hu <cathy.hu@fau.de>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: 0BSD
|
||||||
|
|
||||||
|
from asyncio import run as asyncio_run
|
||||||
|
from fastapi import FastAPI
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
from hypercorn.config import Config
|
||||||
|
from hypercorn.asyncio import serve
|
||||||
|
from kibicara.config import config
|
||||||
|
from kibicara.model import Mapping
|
||||||
|
from kibicara.platformapi import Spawner
|
||||||
|
from kibicara.webapi import router
|
||||||
|
from logging import basicConfig, DEBUG, getLogger
|
||||||
|
|
||||||
|
|
||||||
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Main:
|
||||||
|
def __init__(self):
|
||||||
|
asyncio_run(self.run())
|
||||||
|
|
||||||
|
async def run(self):
|
||||||
|
basicConfig(level=DEBUG, format="%(levelname)s %(name)s %(message)s")
|
||||||
|
Mapping.create_all()
|
||||||
|
await Spawner.init_all()
|
||||||
|
await self._start_webserver()
|
||||||
|
|
||||||
|
async def _start_webserver(self):
|
||||||
|
class SinglePageApplication(StaticFiles):
|
||||||
|
async def get_response(self, path, scope):
|
||||||
|
response = await super().get_response(path, scope)
|
||||||
|
if response.status_code == 404:
|
||||||
|
response = await super().get_response('.', scope)
|
||||||
|
return response
|
||||||
|
app = FastAPI()
|
||||||
|
server_config = Config()
|
||||||
|
server_config.accesslog = '-'
|
||||||
|
app.include_router(router, prefix='/api')
|
||||||
|
if config['frontend_path'] is not None:
|
||||||
|
app.mount('/', app=SinglePageApplication(
|
||||||
|
directory=config['frontend_path'],
|
||||||
|
html=True))
|
||||||
|
await serve(app, server_config)
|
Loading…
Reference in a new issue