Exemplo n.º 1
0
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
Exemplo n.º 2
0
def _register_events(app: FastAPI) -> FastAPI:
    app.on_event("startup")(connect_pgsql_db)
    app.on_event("shutdown")(disconnect_pgsql_db)

    return app
Exemplo n.º 3
0
def register_events(app: FastAPI) -> FastAPI:
    app.on_event("startup")(connect_database)
    app.on_event("shutdown")(disconnect_database)

    return app