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.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 { //初期化 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) { //400(不正なリクエスト) //トークンが空文字の時 if (token.isBlank()) { return Response.status(Response.Status.BAD_REQUEST).build(); } // 200 ArrayList<FriendRequest> requests = friendService.getFriendRequests(token); return Response.status(Response.Status.OK).entity(requests).build(); } @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.APPLICATION_JSON) public Response postFriendRequest(@FormParam("sender-id") String senderId, @FormParam("receiver-id") String receiverId, @FormParam("token") String token) { //201(フレンドリクエスト作成) 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(); } @Path("/{friend-request-id}") @DELETE public Response deleteFriendRequest(@PathParam("friend-request-id") Integer friendRequestId, @QueryParam("receiver-token") String receiverToken) { //トークンが空文字の時 if (receiverToken.isBlank()) { return Response.status(Response.Status.BAD_REQUEST).build(); } boolean isDeleted = friendService.removeFriendRequest(receiverToken, friendRequestId); if (isDeleted) { return Response.status(Response.Status.OK).build(); } else { return Response.status(Response.Status.NOT_FOUND).build(); } } }