diff --git a/src/models/responses.py b/src/models/responses.py index 98924fc..3193b4e 100644 --- a/src/models/responses.py +++ b/src/models/responses.py @@ -36,3 +36,24 @@ def ok_200(data: Any = None) -> JSONResponse: status_code=status.HTTP_200_OK, content={"data": data} ) + +def not_implemented_501(msg: Optional[str] = None) -> HTTPException: + return HTTPException( + status_code=status.HTTP_501_NOT_IMPLEMENTED, + detail=HTTPStatus.NOT_IMPLEMENTED(1) if msg is None else msg, + ) + + + + + + + + + + + + + + + diff --git a/src/routes/geo/country.py b/src/routes/geo/country.py index 065f6f2..85f4196 100644 --- a/src/routes/geo/country.py +++ b/src/routes/geo/country.py @@ -1,5 +1,6 @@ from fastapi import APIRouter, Depends import foss42.geo.country as co + from models.geo.country import CountryCodeModel from models.responses import * @@ -20,6 +21,8 @@ async def get_country_data(data: CountryCodeModel = Depends()): try: res = co.code_to_data(data.code) return ok_200(res) + except ValueError as e: + raise not_found_404(str(e)) except Exception as e: raise internal_error_500() @@ -29,6 +32,8 @@ async def get_country_flag(data: CountryCodeModel = Depends()): try: res = co.code_to_flag(data.code) return ok_200(res) + except ValueError as e: + raise not_found_404(str(e)) except Exception as e: raise internal_error_500() @@ -38,15 +43,18 @@ async def get_country_name(data: CountryCodeModel = Depends()): try: res = co.code_to_popular_name(data.code) return ok_200(res) + except ValueError as e: + raise not_found_404(str(e)) except Exception as e: raise internal_error_500() - @country_router.get("/officialname") async def get_official_country_name(data: CountryCodeModel = Depends()): try: res = co.code_to_official_name(data.code) return ok_200(res) + except ValueError as e: + raise not_found_404(str(e)) except Exception as e: raise internal_error_500() @@ -56,5 +64,10 @@ async def get_country_subdivisions(data: CountryCodeModel = Depends()): try: res = co.code_to_subdivision(data.code) return ok_200(res) + + except ValueError as e: + raise not_found_404(str(e)) + except NotImplementedError as e: + raise not_implemented_501(str(e)) except Exception as e: raise internal_error_500()