mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 12:05:54 +00:00
49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import asyncio
|
|
|
|
import quart
|
|
|
|
from ....core import app
|
|
from .groups import log
|
|
from . import group
|
|
|
|
|
|
class HTTPController:
|
|
|
|
ap: app.Application
|
|
|
|
quart_app: quart.Quart
|
|
|
|
def __init__(self, ap: app.Application) -> None:
|
|
self.ap = ap
|
|
self.quart_app = quart.Quart(__name__)
|
|
|
|
async def initialize(self) -> None:
|
|
await self.register_routes()
|
|
|
|
async def run(self) -> None:
|
|
if self.ap.system_cfg.data['http-api']['enable']:
|
|
async def shutdown_trigger_placeholder():
|
|
while True:
|
|
await asyncio.sleep(1)
|
|
|
|
asyncio.create_task(self.quart_app.run_task(
|
|
host=self.ap.system_cfg.data['http-api']['host'],
|
|
port=self.ap.system_cfg.data['http-api']['port'],
|
|
shutdown_trigger=shutdown_trigger_placeholder
|
|
))
|
|
|
|
async def register_routes(self) -> None:
|
|
|
|
@self.quart_app.route('/healthz')
|
|
async def healthz():
|
|
return {
|
|
"code": 0,
|
|
"msg": "ok"
|
|
}
|
|
|
|
for g in group.preregistered_groups:
|
|
ginst = g(self.ap, self.quart_app)
|
|
await ginst.initialize()
|