diff --git a/app/main.py b/app/main.py index 27b7a42..9c4afa0 100644 --- a/app/main.py +++ b/app/main.py @@ -81,11 +81,11 @@ async def get_current_user(token: str = Depends(oauth2_scheme)) -> User: return user_serialize(user) -# Routes - TODO: find workaround to display 401/409/... HTTP error codes in openapi.json +# Routes @app.post( path="/register", response_model=Token, - responses={409: {"model": Message}} + responses={409: {"model": HTTPError}} ) async def register(user: UserRegisterDTO): user_exists = users_collection.find_one({"username": user.username}) @@ -106,7 +106,7 @@ async def register(user: UserRegisterDTO): @app.post( path="/login", response_model=Token, - responses={401: {"model": Message}} + responses={401: {"model": HTTPError}} ) async def login(form_data: OAuth2PasswordRequestForm = Depends()): user = users_collection.find_one({"username": form_data.username}) @@ -124,7 +124,7 @@ async def login(form_data: OAuth2PasswordRequestForm = Depends()): @app.get( path="/logout", - responses={401: {"model": Message}} + responses={401: {"model": HTTPError}} ) async def logout(current_user: User = Depends(get_current_user)): # TODO: find usecase / what to do ?? @@ -132,18 +132,18 @@ async def logout(current_user: User = Depends(get_current_user)): @app.get( path="/pin/{id}", - responses={401: {"model": Message}, 404: {"model": Message}} + responses={401: {"model": HTTPError}, 404: {"model": HTTPError}} ) async def get_pin(id: str, current_user: User = Depends(get_current_user)): pin = pins_collection.find_one({"_id": ObjectId(id)}) if pin is None: raise HTTPException(status_code=404, detail="Pin not found") - return pin + return pin_serialize(pin) @app.patch( path="/pin/{id}", - responses={401: {"model": Message}, 404: {"model": Message}} + responses={401: {"model": HTTPError}, 404: {"model": HTTPError}} ) async def update_pin(id: str, pin: Pin, current_user: User = Depends(get_current_user)): result = pins_collection.update_one({"_id": ObjectId(id)}, {"$set": pin.model_dump()}) @@ -154,7 +154,7 @@ async def update_pin(id: str, pin: Pin, current_user: User = Depends(get_current @app.post( path="/pin/add", - responses={401: {"model": Message}} + responses={401: {"model": HTTPError}} ) async def add_pin(pin: Pin, current_user: User = Depends(get_current_user)): pin_id = pins_collection.insert_one(pin.model_dump()).inserted_id @@ -162,7 +162,7 @@ async def add_pin(pin: Pin, current_user: User = Depends(get_current_user)): @app.get( path="/pins", - responses={401: {"model": Message}} + responses={401: {"model": HTTPError}} ) async def list_pins(current_user: User = Depends(get_current_user)): pins = pins_serialize(pins_collection.find().to_list()) @@ -170,7 +170,7 @@ async def list_pins(current_user: User = Depends(get_current_user)): @app.get( path="/friend/{id}", - responses={401: {"model": Message}, 404: {"model": Message}} + responses={401: {"model": HTTPError}, 404: {"model": HTTPError}} ) async def get_friend(id: str, current_user: User = Depends(get_current_user)): friend = friends_collection.find_one({"_id": ObjectId(id)}) @@ -181,7 +181,7 @@ async def get_friend(id: str, current_user: User = Depends(get_current_user)): @app.post( path="/friend/add", - responses={401: {"model": Message}, 409: {"model": Message}} + responses={401: {"model": HTTPError}, 409: {"model": HTTPError}} ) async def add_friend(friendAdd: FriendAddDTO, current_user: User = Depends(get_current_user)): # TODO: test if exists @@ -201,7 +201,7 @@ async def add_friend(friendAdd: FriendAddDTO, current_user: User = Depends(get_c @app.delete( path="/friend/{id}/delete", - responses={401: {"model": Message}, 404: {"model": Message}} + responses={401: {"model": HTTPError}, 404: {"model": HTTPError}} ) async def delete_friend(id: str, current_user: User = Depends(get_current_user)): result = friends_collection.delete_one({"_id": ObjectId(id)}) @@ -212,7 +212,7 @@ async def delete_friend(id: str, current_user: User = Depends(get_current_user)) @app.patch( path="/friend/{id}/accept", - responses={401: {"model": Message}, 404: {"model": Message}} + responses={401: {"model": HTTPError}, 404: {"model": HTTPError}} ) async def accept_friend(id: str, current_user: User = Depends(get_current_user)): result = friends_collection.update_one({"_id": ObjectId(id)}, {"$set": {"status": "accepted"}}) @@ -223,7 +223,7 @@ async def accept_friend(id: str, current_user: User = Depends(get_current_user)) @app.post( path="/friend/{id}/deny", - responses={401: {"model": Message}, 404: {"model": Message}} + responses={401: {"model": HTTPError}, 404: {"model": HTTPError}} ) async def deny_friend(id: str, current_user: User = Depends(get_current_user)): result = friends_collection.update_one({"_id": ObjectId(id)}, {"$set": {"status": "denied"}}) @@ -235,14 +235,14 @@ async def deny_friend(id: str, current_user: User = Depends(get_current_user)): @app.get( path="/friends", response_model=FriendListDTO, - responses={401: {"model": Message}} + responses={401: {"model": HTTPError}} ) async def list_friends(current_user: User = Depends(get_current_user)): - return FriendListDTO(**friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}))) + return FriendListDTO(**friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list())) @app.get( path="/users", - responses={401: {"model": Message}, 422: {"model": Message}}, + responses={401: {"model": HTTPError}, 422: {"model": HTTPError}}, response_model=list[UserDTO] ) async def search_users(name: str, current_user: User = Depends(get_current_user)):