diff --git a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java index a51eea4..107909c 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java @@ -3,11 +3,14 @@ import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; +import org.ntlab.tampoposerver.models.FriendRequest; import org.ntlab.tampoposerver.repositories.UserRepository; import org.ntlab.tampoposerver.services.FriendService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; + @Path("/friend-requests") @Component public class FriendRequestsResource { @@ -17,70 +20,61 @@ private FriendService friendService = null; @Autowired - public FriendRequestsResource(UserRepository userRepository, FriendService friendService){ + public FriendRequestsResource(UserRepository userRepository, FriendService friendService) { this.userRepository = userRepository; this.friendService = friendService; } @GET - public Response getfriendrequests(@QueryParam("token") String token){ - - //401(トークンが無効です) - if(!UserRepository.checkToken()){ //トークンが通らなかった時 - var response = Response.status(Response.Status.NOT_FOUND).entity("トークンが無効です。"); - throw new WebApplicationException(response.build()); - } - - //404(データが存在しません) - if(!FriendService.getFriendPair(token)){ //トークンが通らなかった時 - var response = Response.status(Response.Status.NOT_FOUND).entity("指定されたIDのフレンドリクエストが存在しません。"); - throw new WebApplicationException(response.build()); - } - + public Response getFriendRequests(@QueryParam("token") String token, @FormParam("userId") String userId) { //400(不正なリクエスト) //トークンが空文字の時 - if(token.isBlank()){ - throw new WebApplicationException(response.build()); + if (token.isBlank()) { + return Response.status(Response.Status.BAD_REQUEST).build(); } - - //403(権限がありません) - //409(データが重複しています) - //500(サーバー内部でエラーが発生しました) - - //200 - FriendRequest created = service.createFriendRequest(token, senderId, receiverId); - if(created == null){ - throw new WebApplicationException(Response.Status.BAD_REQUEST); + //401(トークンが無効です) + if (!userRepository.checkToken(userId, token)) {//トークンが通らなかった時 + return Response.status(Response.Status.UNAUTHORIZED).build(); } - return Response.status(Response.Status.OK).entity(created,senderId(),receiverId()).build(); + // 200 + ArrayList requests = friendService.getFriendRequests(token); + return Response.status(Response.Status.OK).entity(requests).build(); } @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public void postfriendrequests(@FormParam("sender-id")String senderId, @FormParam("receiver-id")String receiverId, @FormParam("token")String token){ + @Produces(MediaType.APPLICATION_JSON) + public Response postFriendRequest(@FormParam("sender-id") String senderId, @FormParam("receiver-id") String receiverId, @FormParam("token") String token) { //201(フレンドリクエスト作成) - FriendRequest created = service.createFriendRequest(token, senderId, receiverId); - if(created == null){ - throw new WebApplicationException("フレンドリクエストの作成に失敗しました。", Response.Status.BAD_REQUEST); + FriendRequest created = friendService.createFriendRequest(token, senderId, receiverId); + if (created == null) { + return Response.status(Response.Status.BAD_REQUEST).build(); } return Response.status(Response.Status.OK).entity(created.getId()).build(); - //400(不正なリクエスト) } @Path("/{friend-request-id}") @DELETE - public void deletefriendrequests(@PathParam("friend-request-id")Integer friendrequestId, @QueryParam("receiver-token")String receivertoken){ - //404 - if(!FriendService.removeFriendPair(friendrequestId, receivertoken)){ //トークンが通らなかった時 - var response = Response.status(Response.Status.NOT_FOUND).entity("指定されたIDのフレンドリクエストが存在しません。"); - throw new WebApplicationException(response.build()); + public Response deleteFriendRequest(@PathParam("friend-request-id") Integer friendRequestId, @QueryParam("receiver-token") String receiverToken, @FormParam("userId") String userId) { + //トークンが空文字の時 + if (receiverToken.isBlank()) { + return Response.status(Response.Status.BAD_REQUEST).build(); } + //401(トークンが無効です) + if (!userRepository.checkToken(userId, receiverToken)) {//トークンが通らなかった時 + return Response.status(Response.Status.UNAUTHORIZED).build(); + } - return; + boolean isDeleted = friendService.removeFriendRequest(receiverToken, friendRequestId); + if (isDeleted) { + return Response.status(Response.Status.OK).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } } }