package org.ntlab.tampoposerver.resources; 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 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; } }