Ejemplo n.º 1
0
def setup_api(title: str, description: str, version: str,
              cors_origins: List[str], routers: List):
    middleware = [
        Middleware(RawContextMiddleware,
                   plugins=(plugins.RequestIdPlugin(),
                            plugins.CorrelationIdPlugin()))
    ]

    app = FastAPI(title=title,
                  description=description,
                  version=version,
                  middleware=middleware)

    if cors_origins:
        _LOGGER.debug(
            f'Adding CORS middleware for origins {", ".join(cors_origins)}')

        app.add_middleware(
            CORSMiddleware,
            allow_origins=cors_origins,
            allow_credentials=True,
            allow_methods=["*"],
            allow_headers=["*"],
        )

    # FastAPIInstrumentor.instrument_app(app)
    # PrometheusInstrumentator().instrument(app).expose(app)

    for router in routers:
        app.include_router(router.router)

    return app
Ejemplo n.º 2
0
 def __registerMiddleWares(self):
     application = loadCordsMiddleware(self.applicationObject)
     '''Load middlewares'''
     if self.__startLogSystem():
         application.middleware('http')(registerLoggerMiddleware(self.applicationObject))
     application.middleware('http')(registerConfigMiddleware(self.applicationObject))
     application.add_middleware(ContextMiddleware.with_plugins(
         plugins.CorrelationIdPlugin(),
         plugins.RequestIdPlugin(),
         plugins.DateHeaderPlugin(),
         plugins.ForwardedForPlugin(),
         plugins.UserAgentPlugin(),
     ))
def test_force_new_uuid():
    app_force_uuid = Starlette(middleware=[
        Middleware(
            ContextMiddleware,
            plugins=(plugins.CorrelationIdPlugin(force_new_uuid=True), ),
        )
    ])
    force_uuid_client = TestClient(app_force_uuid)

    @app_force_uuid.route("/")
    async def index(request: Request) -> Response:
        return Response(status_code=status.HTTP_204_NO_CONTENT)

    response = force_uuid_client.get("/", headers=headers)
    assert response.status_code == status.HTTP_204_NO_CONTENT
    assert HeaderKeys.correlation_id in response.headers
    assert (response.headers.get(HeaderKeys.correlation_id) !=
            dummy_correlation_id)
Ejemplo n.º 4
0
from fastapi import FastAPI
from ariadne.asgi import GraphQL
from app.server.graphql.schema import schema
from starlette.requests import Request
from starlette.responses import JSONResponse
from starlette.middleware import Middleware
from starlette.middleware.sessions import SessionMiddleware

from starlette_context import context, plugins
from starlette_context.middleware import ContextMiddleware

middleware = [
    Middleware(
        ContextMiddleware,
        plugins=(plugins.RequestIdPlugin(), plugins.CorrelationIdPlugin()),
    )
]

app = FastAPI(middleware=middleware)

app.add_route("/graphql", GraphQL(schema, debug=True))
Ejemplo n.º 5
0
class LoggingMiddleware(BaseHTTPMiddleware):
    """Example logging middleware."""
    async def dispatch(self, request: Request,
                       call_next: RequestResponseEndpoint) -> Response:
        await logger.info("request log", request=request)
        response = await call_next(request)
        await logger.info("response log", response=response)
        return response


middlewares = [
    Middleware(
        RawContextMiddleware,
        plugins=(
            plugins.CorrelationIdPlugin(),
            plugins.RequestIdPlugin(),
        ),
    ),
    Middleware(LoggingMiddleware),
]

app = Starlette(debug=True, middleware=middlewares)


@app.on_event("startup")
async def startup_event() -> None:
    from setup_logging import setup_logging

    setup_logging()
Ejemplo n.º 6
0
def plugin():
    return plugins.CorrelationIdPlugin()
def test_unsupported_uuid():
    with pytest.raises(TypeError):
        plugins.CorrelationIdPlugin(force_new_uuid=True,
                                    validate=False,
                                    version=1)
Ejemplo n.º 8
0
def test_version_cant_map_to_function():
    with pytest.raises(TypeError):
        plugins.CorrelationIdPlugin(version=123)