Skip to content
Snippets Groups Projects
Verified Commit 1d5970c4 authored by hanfi's avatar hanfi
Browse files

add rate limit for item creation

parent 63b4e749
No related branches found
No related tags found
No related merge requests found
from uuid import UUID
from fastapi import Depends, FastAPI, HTTPException
from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.errors import RateLimitExceeded
from slowapi.util import get_remote_address
from sqlalchemy.orm import Session
from . import schemas, utils
......@@ -13,8 +16,6 @@ create_database()
app = FastAPI()
origins = [settings.customer_url, settings.worker_url]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
......@@ -22,6 +23,9 @@ app.add_middleware(
allow_methods=["*"],
allow_headers=["*"],
)
limiter = Limiter(key_func=get_remote_address)
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
# Dependency
......@@ -34,7 +38,12 @@ def get_db():
@app.post("/item/prepare", response_model=schemas.Item)
def add_item(item: schemas.ItemCreatePrepareShipping, db: Session = Depends(get_db)):
@limiter.limit("2/minute")
def add_item(
request: Request,
item: schemas.ItemCreatePrepareShipping,
db: Session = Depends(get_db),
):
return utils.prepare_item_shipping(db, item)
......
......
......@@ -4,3 +4,4 @@ Jinja2==3.1.2
python-multipart==0.0.6
SQLAlchemy==2.0.9
uvicorn[standard]==0.21.1
slowapi==0.1.8
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment