diff --git a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java index 678c967..a51eea4 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java @@ -1,15 +1,86 @@ package org.ntlab.tampoposerver.resources; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.ntlab.tampoposerver.repositories.UserRepository; +import org.ntlab.tampoposerver.services.FriendService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Path("/friend-requests") @Component public class FriendRequestsResource { + + //初期化 + private UserRepository userRepository = null; + private FriendService friendService = null; + + @Autowired + public FriendRequestsResource(UserRepository userRepository, FriendService friendService){ + this.userRepository = userRepository; + this.friendService = friendService; + } + @GET - public String getfriendrequests(@QueryParam("token") String token){ - return "Hello World!"; + 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()); + } + + //400(不正なリクエスト) + //トークンが空文字の時 + if(token.isBlank()){ + throw new WebApplicationException(response.build()); + } + + + //403(権限がありません) + //409(データが重複しています) + //500(サーバー内部でエラーが発生しました) + + //200 + FriendRequest created = service.createFriendRequest(token, senderId, receiverId); + if(created == null){ + throw new WebApplicationException(Response.Status.BAD_REQUEST); + } + return Response.status(Response.Status.OK).entity(created,senderId(),receiverId()).build(); + + } + + @POST + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public void postfriendrequests(@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); + } + 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()); + } + + + return; } }