Limits implemented
This commit is contained in:
parent
84be0c7154
commit
02552dce5a
@ -10,6 +10,10 @@
|
|||||||
"data": "data"
|
"data": "data"
|
||||||
},
|
},
|
||||||
"compression": 5,
|
"compression": 5,
|
||||||
|
"limits": {
|
||||||
|
"saves": -1,
|
||||||
|
"devices": -1
|
||||||
|
},
|
||||||
"messages": {
|
"messages": {
|
||||||
"key_expired": "API key expired",
|
"key_expired": "API key expired",
|
||||||
"key_invalid": "Invalid API key",
|
"key_invalid": "Invalid API key",
|
||||||
|
@ -3,7 +3,9 @@ from modules.database import col_devices, col_saves
|
|||||||
from fastapi import HTTPException, Depends
|
from fastapi import HTTPException, Depends
|
||||||
from fastapi.responses import UJSONResponse, Response
|
from fastapi.responses import UJSONResponse, Response
|
||||||
from fastapi.openapi.models import APIKey
|
from fastapi.openapi.models import APIKey
|
||||||
from starlette.status import HTTP_204_NO_CONTENT, HTTP_404_NOT_FOUND, HTTP_409_CONFLICT
|
from starlette.status import HTTP_204_NO_CONTENT, HTTP_403_FORBIDDEN, HTTP_404_NOT_FOUND, HTTP_409_CONFLICT
|
||||||
|
|
||||||
|
from modules.utils import configGet
|
||||||
|
|
||||||
@app.get("/devices", response_class=UJSONResponse, description="Get all devices")
|
@app.get("/devices", response_class=UJSONResponse, description="Get all devices")
|
||||||
async def devices_get(apikey: APIKey = Depends(get_api_key)):
|
async def devices_get(apikey: APIKey = Depends(get_api_key)):
|
||||||
@ -48,6 +50,15 @@ async def devices_post(name: str, os: str, apikey: APIKey = Depends(get_api_key)
|
|||||||
|
|
||||||
user = user_by_key(apikey)
|
user = user_by_key(apikey)
|
||||||
|
|
||||||
|
if col_devices.count_documents({"user": user}) >= configGet("devices", "limits"):
|
||||||
|
return UJSONResponse(
|
||||||
|
{
|
||||||
|
"detail": f'Too many devices. This instance allows to register only {configGet("devices", "limits")} devices per user',
|
||||||
|
"limit": configGet("devices", "limits")
|
||||||
|
},
|
||||||
|
status_code=HTTP_403_FORBIDDEN
|
||||||
|
)
|
||||||
|
|
||||||
if col_devices.find_one({"user": user, "name": name}) is not None:
|
if col_devices.find_one({"user": user, "name": name}) is not None:
|
||||||
raise HTTPException(HTTP_409_CONFLICT, detail="Device with this name already exists.")
|
raise HTTPException(HTTP_409_CONFLICT, detail="Device with this name already exists.")
|
||||||
|
|
||||||
|
@ -9,9 +9,9 @@ from modules.database import col_devices, col_saves
|
|||||||
from fastapi import HTTPException, Depends, UploadFile
|
from fastapi import HTTPException, Depends, UploadFile
|
||||||
from fastapi.responses import UJSONResponse, FileResponse, Response
|
from fastapi.responses import UJSONResponse, FileResponse, Response
|
||||||
from fastapi.openapi.models import APIKey
|
from fastapi.openapi.models import APIKey
|
||||||
from starlette.status import HTTP_204_NO_CONTENT, HTTP_404_NOT_FOUND, HTTP_406_NOT_ACCEPTABLE
|
from starlette.status import HTTP_204_NO_CONTENT, HTTP_403_FORBIDDEN, HTTP_404_NOT_FOUND, HTTP_406_NOT_ACCEPTABLE
|
||||||
|
|
||||||
from modules.utils import zip_saves
|
from modules.utils import configGet, zip_saves
|
||||||
|
|
||||||
|
|
||||||
@app.get("/saves", response_class=UJSONResponse, response_model=Dict[str, StardewSave], description="Get all available game saves")
|
@app.get("/saves", response_class=UJSONResponse, response_model=Dict[str, StardewSave], description="Get all available game saves")
|
||||||
@ -137,6 +137,15 @@ async def saves_post(device: str, files: List[UploadFile], apikey: APIKey = Depe
|
|||||||
|
|
||||||
error_return = HTTPException(HTTP_406_NOT_ACCEPTABLE, detail="You must provide two files: save file and SaveGameInfo for that save")
|
error_return = HTTPException(HTTP_406_NOT_ACCEPTABLE, detail="You must provide two files: save file and SaveGameInfo for that save")
|
||||||
|
|
||||||
|
if col_saves.count_documents({"user": user}) >= configGet("saves", "limits"):
|
||||||
|
return UJSONResponse(
|
||||||
|
{
|
||||||
|
"detail": f'Too many save files. This instance allows to store only {configGet("saves", "limits")} saves per user',
|
||||||
|
"limit": configGet("saves", "limits")
|
||||||
|
},
|
||||||
|
status_code=HTTP_403_FORBIDDEN
|
||||||
|
)
|
||||||
|
|
||||||
if len(files) != 2:
|
if len(files) != 2:
|
||||||
return error_return
|
return error_return
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user