def setup(app: FastAPI): """ Install skill designer UI routes and CORS middleware @param app: @return: """ # CORS middleware to allow requests from dev and prod UI app.add_middleware( CORSMiddleware, allow_origins=[ "http://*****:*****@app.on_event("startup") async def startup(): # Prime the push notification generator await notifier.generator.asend(None) # Silence the websocket.protocol logger logging.getLogger("websockets").setLevel(logging.CRITICAL) # Setup a queue that passes log records to websockets queue = asyncio.Queue() handler = logging.handlers.QueueHandler(queue) formatter = logging.Formatter("%(levelname)-8s %(name)s - %(message)s") handler.setLevel(logger.level) handler.setFormatter(formatter) logger.addHandler(handler) asyncio.ensure_future(notifier.worker(queue)) # Root UI app.mount("/", StaticFiles(directory=str(UI_ROOT), html=True), name="Skill UI")
def create_app(): conf = configuration.get() logger.setup(conf.log_level) app = FastAPI() @app.on_event("startup") async def startup_event(): try: app.redis_cache = await aioredis.create_redis( "redis://localhost:6379") except Exception: asyncio.get_event_loop().stop() asyncio.get_event_loop().close() app.add_middleware(CORSMiddleware, allow_origins=["*"]) app.include_router(base_router, tags=["index"]) app.add_websocket_route("/chat/ws/{chat_id}", WebSocketEndpointCustom) return app
for r, ropts in routers: logger.debug(f"[email protected] - Registering router {str(r)} {str(ropts)}") main_router.include_router(r, **ropts) logger.debug(f"[email protected] - Registering main router {str(r)} {str(ropts)}") api.include_router(main_router, prefix=config.API_V1_STR) from starlette.websockets import WebSocket # public broadcast if int(environ.get("BROADCAST_ENABLED", 0)) == 1: logger.info("[email protected] - Registering broadcast routers") api.add_websocket_route("/broadcast", broadcast_index, name="broadcast.index") api.add_websocket_route("/broadcast/auth", broadcast_auth, name="broadcast.auth.index") @api.get("/") async def webui_redir(): return RedirectResponse(url="/landing/", status_code=302) # served by nginx if Path(landing_dir("index.html")).is_file(): logger.info("[email protected] - Registering landing routers")
import strawberry from fastapi import FastAPI from strawberry.asgi import GraphQL @strawberry.type class User: name: str age: int @strawberry.type class Query: @strawberry.field def user(self) -> User: return User(name="Patrick", age=100) schema = strawberry.Schema(query=Query) graphql_app = GraphQL(schema) app = FastAPI() app.add_route("/graphql", graphql_app) app.add_websocket_route("/graphql", graphql_app)
description="API documents for guild.randosoru.me", version="0.5.6", docs_url=None, redoc_url="/doc", ) sio_app = socketio.ASGIApp(sio_router.sio) # CORS app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # app.include_router(oauth.router) app.include_router(user.router) app.include_router(form.router) app.include_router(bot.router) app.add_route("/socket.io/", route=sio_app, methods=["GET", "POST"]) app.add_websocket_route("/socket.io/", sio_app) @app.get("/") def index(): return {"version": app.version}
async def event_bus_client(event_bus): app = FastAPI() app.add_websocket_route('/ws', event_bus.accept) async with TestClient(app) as test_client: yield test_client
import websocket from pydantic import BaseModel from fastapi import FastAPI, Body, File, UploadFile, Response, Cookie, Request, Depends, Header, HTTPException from fastapi.responses import RedirectResponse from fastapi.logger import logger import logging from starlette.middleware.cors import CORSMiddleware from starlette import status import datetime app = FastAPI() app.add_websocket_route("/ws/{token}", websocket.EndPoint) app.add_websocket_route("/ws-battle", websocket.BattleEndPoint) app.add_middleware( CORSMiddleware, allow_origins=["*"], # FIXME for production allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) fh = logging.FileHandler('log.log') logger.addHandler(fh) connections = ''#websocket.Connections()