def init_sio_client(settings: Settings, deps: Dependencies, app: FastAPI) -> FastAPI: sio = AsyncClient() url = settings.LISTENER_URL @sio.event def connect(): logger.info(f"Connected to {url}...") @sio.event def disconnect(): logger.info("Disconnecting...") @sio.event async def occurrence(event: OccurrenceEvent): dto = ReportThreatDto( name=event["monsterName"], danger_level=event["dangerLevel"].lower(), location=event["location"][0], ) threat = await threat_service.report_threat(deps.threat_monitor, deps.threat_repository, dto) logger.info(f"Reported threat of name {threat.name}") # App event handlers async def start_listener(): if settings.ENV == Env.testing: return await sio.connect(url) async def stop_listener(): await sio.disconnect() app.on_event("startup")(start_listener) app.on_event("shutdown")(stop_listener) return app
def _register_events(app: FastAPI) -> FastAPI: app.on_event("startup")(connect_pgsql_db) app.on_event("shutdown")(disconnect_pgsql_db) return app
def register_events(app: FastAPI) -> FastAPI: app.on_event("startup")(connect_database) app.on_event("shutdown")(disconnect_database) return app