74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
|
from fastapi import Request
|
||
|
from fastapi.responses import UJSONResponse
|
||
|
from starlette.status import (
|
||
|
HTTP_400_BAD_REQUEST,
|
||
|
HTTP_401_UNAUTHORIZED,
|
||
|
HTTP_404_NOT_FOUND,
|
||
|
HTTP_422_UNPROCESSABLE_ENTITY,
|
||
|
)
|
||
|
|
||
|
from classes.exceptions import (
|
||
|
EntrySearchQueryEmptyError,
|
||
|
LocationNotFoundError,
|
||
|
LocationSearchQueryEmptyError,
|
||
|
SearchLimitInvalidError,
|
||
|
SearchPageInvalidError,
|
||
|
)
|
||
|
from modules.app import app
|
||
|
|
||
|
|
||
|
@app.exception_handler(LocationNotFoundError)
|
||
|
async def location_not_found_exception_handler(
|
||
|
request: Request, exc: LocationNotFoundError
|
||
|
):
|
||
|
return UJSONResponse(
|
||
|
status_code=HTTP_404_NOT_FOUND,
|
||
|
content={"detail": f"Could not find location with id '{exc.id}'."},
|
||
|
)
|
||
|
|
||
|
|
||
|
@app.exception_handler(EntrySearchQueryEmptyError)
|
||
|
async def entry_search_query_empty_exception_handler(
|
||
|
request: Request, exc: EntrySearchQueryEmptyError
|
||
|
):
|
||
|
return UJSONResponse(
|
||
|
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
|
||
|
content={
|
||
|
"detail": "You must provide location and date(s) to look for entries."
|
||
|
},
|
||
|
)
|
||
|
|
||
|
|
||
|
@app.exception_handler(LocationSearchQueryEmptyError)
|
||
|
async def location_search_query_empty_exception_handler(
|
||
|
request: Request, exc: LocationSearchQueryEmptyError
|
||
|
):
|
||
|
return UJSONResponse(
|
||
|
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
|
||
|
content={
|
||
|
"detail": "You must provide name or coordinates to look for location."
|
||
|
},
|
||
|
)
|
||
|
|
||
|
|
||
|
@app.exception_handler(SearchLimitInvalidError)
|
||
|
async def search_limit_invalid_exception_handler(
|
||
|
request: Request, exc: SearchLimitInvalidError
|
||
|
):
|
||
|
return UJSONResponse(
|
||
|
status_code=HTTP_401_UNAUTHORIZED,
|
||
|
content={"detail": "Parameter 'limit' must be greater or equal to 1."},
|
||
|
)
|
||
|
|
||
|
|
||
|
@app.exception_handler(SearchPageInvalidError)
|
||
|
async def search_page_invalid_exception_handler(
|
||
|
request: Request, exc: SearchPageInvalidError
|
||
|
):
|
||
|
return UJSONResponse(
|
||
|
status_code=HTTP_400_BAD_REQUEST,
|
||
|
content={
|
||
|
"detail": "Parameters 'page' and 'page_size' must be greater or equal to 1."
|
||
|
},
|
||
|
)
|