Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions backend/rate_limiting.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from slowapi import Limiter
from slowapi.util import get_remote_address

limiter = Limiter(key_func=get_remote_address)
1 change: 1 addition & 0 deletions backend/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
fastapi
slowapi
fastapi-utilities
python-dotenv
motor[srv]
Expand Down
6 changes: 4 additions & 2 deletions backend/routes.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import datetime

from fastapi import APIRouter, Security
from fastapi import APIRouter, Request, Security
from models import ApiKeyDocument, CocktailDocument, InstallationDocument
from rate_limiting import limiter
from schemas import CocktailData, CocktailWithoutKey, InstallationData
from security import get_api_key

Expand Down Expand Up @@ -44,7 +45,8 @@ async def get_cocktaildata() -> list[CocktailWithoutKey]:


@public_router.post("/installation", tags=["installation"])
async def post_installation(information: InstallationData):
@limiter.limit("1/minute")
async def post_installation(request: Request, information: InstallationData):
"""Endpoint to post information about successful installation.

Route is open accessible.
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ dependencies = [
"beanie>=1.29.0",
"fastapi>=0.115.12",
"fastapi-utilities>=0.3",
"motor[srv]>=3.7.0",
"pandas>=2.2.3",
"plotly>=6.0.1",
"python-dotenv>=1.1.0",
"requests>=2.32.3",
"slowapi>=0.1.9",
"streamlit>=1.44.1",
"uvicorn>=0.34.2",
]
Expand Down
84 changes: 82 additions & 2 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.