split api, support custom templates
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import uuid
|
||||
|
||||
import capport.database
|
||||
import capport.comm.hub
|
||||
import capport.comm.message
|
||||
import capport.utils.cli
|
||||
import capport.utils.ipneigh
|
||||
import trio
|
||||
|
||||
from .app import app
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ApiHubApp(capport.comm.hub.HubApplication):
|
||||
async def mac_states_changed(self, *, from_peer_id: uuid.UUID, pending_updates: capport.database.PendingUpdates) -> None:
|
||||
# TODO: support websocket notification updates to clients?
|
||||
pass
|
||||
|
||||
|
||||
async def _run_hub(*, task_status=trio.TASK_STATUS_IGNORED) -> None:
|
||||
try:
|
||||
async with capport.utils.ipneigh.connect() as mync:
|
||||
app.my_nc = mync
|
||||
_logger.info("Running hub for API")
|
||||
myapp = ApiHubApp()
|
||||
myhub = capport.comm.hub.Hub(config=app.my_config, app=myapp)
|
||||
app.my_hub = myhub
|
||||
await myhub.run(task_status=task_status)
|
||||
finally:
|
||||
app.my_hub = None
|
||||
app.my_nc = None
|
||||
_logger.info("Done running hub for API")
|
||||
await app.shutdown()
|
||||
|
||||
|
||||
@app.before_serving
|
||||
async def init():
|
||||
app.debug = app.my_config.debug
|
||||
app.secret_key = app.my_config.cookie_secret
|
||||
capport.utils.cli.init_logger(app.my_config)
|
||||
await app.nursery.start(_run_hub)
|
||||
Reference in New Issue
Block a user