Fixes and cleanups #11
@ -1,7 +1,9 @@
|
|||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
|
from fastapi import HTTPException
|
||||||
|
|
||||||
class AlbumNotFoundError(Exception):
|
|
||||||
|
class AlbumNotFoundError(HTTPException):
|
||||||
"""Raises HTTP 404 if no album with this ID found."""
|
"""Raises HTTP 404 if no album with this ID found."""
|
||||||
|
|
||||||
def __init__(self, id: str):
|
def __init__(self, id: str):
|
||||||
@ -16,7 +18,7 @@ class AlbumNotFoundError(Exception):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class AlbumNameNotFoundError(Exception):
|
class AlbumNameNotFoundError(HTTPException):
|
||||||
"""Raises HTTP 404 if no album with this name found."""
|
"""Raises HTTP 404 if no album with this name found."""
|
||||||
|
|
||||||
def __init__(self, name: str):
|
def __init__(self, name: str):
|
||||||
@ -29,9 +31,15 @@ class AlbumNameNotFoundError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=404,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"][
|
||||||
|
"detail"
|
||||||
|
].format(name=self.name),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class AlbumAlreadyExistsError(Exception):
|
class AlbumAlreadyExistsError(HTTPException):
|
||||||
"""Raises HTTP 409 if album with this name already exists."""
|
"""Raises HTTP 409 if album with this name already exists."""
|
||||||
|
|
||||||
def __init__(self, name: str):
|
def __init__(self, name: str):
|
||||||
@ -44,9 +52,15 @@ class AlbumAlreadyExistsError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=409,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"][
|
||||||
|
"detail"
|
||||||
|
].format(name=self.name),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class AlbumIncorrectError(Exception):
|
class AlbumIncorrectError(HTTPException):
|
||||||
"""Raises HTTP 406 if album's title or name is invalid."""
|
"""Raises HTTP 406 if album's title or name is invalid."""
|
||||||
|
|
||||||
def __init__(self, place: Literal["name", "title"], error: str) -> None:
|
def __init__(self, place: Literal["name", "title"], error: str) -> None:
|
||||||
@ -56,13 +70,19 @@ class AlbumIncorrectError(Exception):
|
|||||||
"description": "Album Name/Title Invalid",
|
"description": "Album Name/Title Invalid",
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"example": {"detail": "Album {name/title} invalid: {error}"}
|
"example": {"detail": "Album {place} invalid: {error}"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=406,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"][
|
||||||
|
"detail"
|
||||||
|
].format(place=self.place, error=self.error),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PhotoNotFoundError(Exception):
|
class PhotoNotFoundError(HTTPException):
|
||||||
"""Raises HTTP 404 if no photo with this ID found."""
|
"""Raises HTTP 404 if no photo with this ID found."""
|
||||||
|
|
||||||
def __init__(self, id: str):
|
def __init__(self, id: str):
|
||||||
@ -75,9 +95,15 @@ class PhotoNotFoundError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=404,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"][
|
||||||
|
"detail"
|
||||||
|
].format(id=self.id),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class PhotoSearchQueryEmptyError(Exception):
|
class PhotoSearchQueryEmptyError(HTTPException):
|
||||||
"""Raises HTTP 422 if no photo search query provided."""
|
"""Raises HTTP 422 if no photo search query provided."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -91,9 +117,13 @@ class PhotoSearchQueryEmptyError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=422,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VideoNotFoundError(Exception):
|
class VideoNotFoundError(HTTPException):
|
||||||
"""Raises HTTP 404 if no video with this ID found."""
|
"""Raises HTTP 404 if no video with this ID found."""
|
||||||
|
|
||||||
def __init__(self, id: str):
|
def __init__(self, id: str):
|
||||||
@ -106,9 +136,15 @@ class VideoNotFoundError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=404,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"][
|
||||||
|
"detail"
|
||||||
|
].format(id=self.id),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VideoSearchQueryEmptyError(Exception):
|
class VideoSearchQueryEmptyError(HTTPException):
|
||||||
"""Raises HTTP 422 if no video search query provided."""
|
"""Raises HTTP 422 if no video search query provided."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -122,9 +158,13 @@ class VideoSearchQueryEmptyError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=422,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SearchPageInvalidError(Exception):
|
class SearchPageInvalidError(HTTPException):
|
||||||
"""Raises HTTP 400 if page or page size are not in valid range."""
|
"""Raises HTTP 400 if page or page size are not in valid range."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -138,9 +178,13 @@ class SearchPageInvalidError(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=400,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SearchTokenInvalidError(Exception):
|
class SearchTokenInvalidError(HTTPException):
|
||||||
"""Raises HTTP 401 if search token is not valid."""
|
"""Raises HTTP 401 if search token is not valid."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -150,9 +194,13 @@ class SearchTokenInvalidError(Exception):
|
|||||||
"application/json": {"example": {"detail": "Invalid search token."}}
|
"application/json": {"example": {"detail": "Invalid search token."}}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=401,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserEmailCodeInvalid(Exception):
|
class UserEmailCodeInvalid(HTTPException):
|
||||||
"""Raises HTTP 400 if email confirmation code is not valid."""
|
"""Raises HTTP 400 if email confirmation code is not valid."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -164,9 +212,13 @@ class UserEmailCodeInvalid(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=400,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserAlreadyExists(Exception):
|
class UserAlreadyExists(HTTPException):
|
||||||
"""Raises HTTP 409 if user with this name already exists."""
|
"""Raises HTTP 409 if user with this name already exists."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -178,9 +230,13 @@ class UserAlreadyExists(Exception):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=409,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class AccessTokenInvalidError(Exception):
|
class AccessTokenInvalidError(HTTPException):
|
||||||
"""Raises HTTP 401 if access token is not valid."""
|
"""Raises HTTP 401 if access token is not valid."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -190,9 +246,13 @@ class AccessTokenInvalidError(Exception):
|
|||||||
"application/json": {"example": {"detail": "Invalid access token."}}
|
"application/json": {"example": {"detail": "Invalid access token."}}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=401,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UserCredentialsInvalid(Exception):
|
class UserCredentialsInvalid(HTTPException):
|
||||||
"""Raises HTTP 401 if user credentials are not valid."""
|
"""Raises HTTP 401 if user credentials are not valid."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -202,3 +262,7 @@ class UserCredentialsInvalid(Exception):
|
|||||||
"application/json": {"example": {"detail": "Invalid credentials."}}
|
"application/json": {"example": {"detail": "Invalid credentials."}}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
super().__init__(
|
||||||
|
status_code=401,
|
||||||
|
detail=self.openapi["content"]["application/json"]["example"]["detail"],
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user