package org.ntlab.tampoposerver.resources; import com.fasterxml.jackson.annotation.JsonTypeInfo; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import org.ntlab.tampoposerver.models.FriendPair; import org.ntlab.tampoposerver.repositories.UserRepository; import org.ntlab.tampoposerver.services.FriendService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.AliasFor; import org.springframework.stereotype.Component; import java.util.UUID; @Path("/friends") @Component public class FriendsResource { private UserRepository userRepository = null; private FriendService friendService = null; @Autowired public FriendsResource(UserRepository userRepository, FriendService friendService) { this.userRepository = userRepository; this.friendService = friendService; } @Path("/{pair-id}") @POST @Consumes (MediaType.APPLICATION_FORM_URLENCODED) public Response postFriends(@FormParam("token")String token,@FormParam("user0-id")String user0Id,@FormParam("user1-id")String user1Id){ //400 if (token == null || token.isEmpty()) { //トークンがないか空だったら var response = Response.status(Response.Status.BAD_REQUEST).entity("トークンが無効です。"); return Response.status(Response.Status.BAD_REQUEST).build(); } //403(未認証&トークンの不一致) if (!userRepository.checkToken(user0Id, token) || !userRepository.checkToken(user1Id, token)) { // ユーザーまたはトークンが存在しない はるかと相談済み var response = Response.status(Response.Status.FORBIDDEN).entity("認証エラーです。"); return Response.status(Response.Status.BAD_REQUEST).build(); } //200 FriendPair pair = friendService.createFriendPair(user0Id,user1Id); if (pair == null) { return Response.status(Response.Status.NOT_FOUND).build(); } return Response.status(Response.Status.OK).build(); //500は勝手にサーバがエラーでたらでるから書かない } @Path("/{pair-id}") @GET public Response getFriend(@QueryParam("token") String token, @PathParam("pair-id") int pairId) { //400 if (token == null || token.isBlank()) { //トークンがないか空だったら return Response.status(Response.Status.BAD_REQUEST).build(); } //200 FriendPair pair = friendService.getFriendPair(token, pairId); if (pair == null) { return Response.status(Response.Status.NOT_FOUND).build(); } return Response.status(Response.Status.OK).build(); } @Path("/{pair-id}") @DELETE public Response deleteFriend(@QueryParam("token") String token, @PathParam("pair-id") Integer pairId) { //400 if (token == null || token.isEmpty()) { //トークンがないか空だったら var response = Response.status(Response.Status.BAD_REQUEST).entity("トークンが無効です。"); return Response.status(Response.Status.BAD_REQUEST).build(); } //404 if (!friendService.removeFriendPair(token,pairId)){ //トークンに対応したユーザが選択したフレンドが存在しない時 var response = Response.status(Response.Status.NOT_FOUND).entity("データが存在しないです。");//404 return Response.status(Response.Status.NOT_FOUND).build(); } //200 return Response.status(Response.Status.OK).build(); //500は勝手にサーバがエラーでたらでるから書かない } }