File tree Expand file tree Collapse file tree 5 files changed +172
-2
lines changed
Expand file tree Collapse file tree 5 files changed +172
-2
lines changed Original file line number Diff line number Diff line change 22from contextlib import asynccontextmanager
33
44from fastapi import FastAPI
5+ from slowapi import _rate_limit_exceeded_handler
56
67from app .routers .router import setup_router as setup_router_v2
78from app .services .database .database import AsyncSessionLocal , init_db
9+ from app .services .limiter import limiter
810
911logger = logging .getLogger (__name__ )
1012
@@ -27,6 +29,9 @@ async def lifespan(app: FastAPI):
2729)
2830
2931
32+ app .state .limiter = limiter
33+ app .add_exception_handler (429 , _rate_limit_exceeded_handler )
34+
3035app .include_router (setup_router_v2 (), prefix = "/api" )
3136
3237logger .info ("PyNews Server Starter" )
Original file line number Diff line number Diff line change 1010from app .services import auth
1111from app .services .database .models import Community as DBCommunity
1212from app .services .database .orm .community import get_community_by_username
13+ from app .services .limiter import limiter
1314
1415oauth2_scheme = OAuth2PasswordBearer (tokenUrl = "/authentication/token" )
1516
@@ -89,6 +90,7 @@ async def create_community(request: Request):
8990 # Teste
9091
9192 @router .post ("/token" , response_model = Token )
93+ @limiter .limit ("60/minute" )
9294 async def login_for_access_token (
9395 request : Request , form_data : OAuth2PasswordRequestForm = Depends ()
9496 ):
@@ -110,7 +112,9 @@ async def login_for_access_token(
110112 }
111113
112114 @router .get ("/me" , response_model = Community )
115+ @limiter .limit ("60/minute" )
113116 async def read_community_me (
117+ request : Request ,
114118 current_community : Annotated [
115119 DBCommunity , Depends (get_current_active_community )
116120 ],
Original file line number Diff line number Diff line change 1+ from slowapi import Limiter
2+ from slowapi .util import get_remote_address
3+
4+ limiter = Limiter (key_func = get_remote_address )
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ pre-commit = "^4.2.0"
2020python-multipart = " ^0.0.20"
2121pyjwt = " ^2.10.1"
2222bcrypt = " ^4.3.0"
23+ slowapi = " ^0.1.9"
2324
2425[tool .poetry .group .dev .dependencies ]
2526pytest = " ^8.3.2"
You can’t perform that action at this time.
0 commit comments