From fff8b58ce7455287e824ab47d93f2302a3bb32f9 Mon Sep 17 00:00:00 2001 From: Elior Erez Date: Fri, 14 Jan 2022 22:52:09 +0200 Subject: [PATCH] Fix BrokenResourceError on starlette. See https://github.com/tiangolo/fastapi/issues/4041 for more details. Add middleware for handle requests without headers in request. --- bug_master/app.py | 9 +++++++++ requirements.txt | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bug_master/app.py b/bug_master/app.py index 135d313..f12435f 100644 --- a/bug_master/app.py +++ b/bug_master/app.py @@ -7,6 +7,7 @@ from fastapi import FastAPI, Request, Response from fastapi.routing import APIRoute, APIRouter from slack_sdk import signature +from starlette.responses import JSONResponse, StreamingResponse from uvicorn_loguru_integration import run_uvicorn_loguru from . import consts @@ -56,6 +57,14 @@ async def custom_route_handler(request: Request) -> Response: signature_verifier = signature.SignatureVerifier(consts.SIGNING_SECRET) +@app.middleware('http') +async def headers_middleware(request: Request, call_next: Callable): + if not hasattr(request, "headers"): + return JSONResponse(content={"message": "Invalid request"}, status_code=401) + response: StreamingResponse = await call_next(request) + return response + + @router.post("/slack/config") async def config(request: Request): body = {k.decode(): v.pop().decode() for k, v in parse_qs(await request.body()).items()} diff --git a/requirements.txt b/requirements.txt index f98c001..157f09d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ uvicorn==0.15.0 -fastapi==0.70.0 +fastapi==0.71.0 loguru==0.5.3 slackers==1.0.0 -starlette==0.16.0 +starlette==0.17.1 aiohttp==3.8.0 PyYAML==6.0 slack_sdk==3.11.2