diff --git a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java index 678c967..107909c 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/FriendRequestsResource.java @@ -1,15 +1,80 @@ 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.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 String getfriendrequests(@QueryParam("token") String token){ - return "Hello World!"; + public Response getFriendRequests(@QueryParam("token") String token, @FormParam("userId") String userId) { + //400(不正なリクエスト) + //トークンが空文字の時 + if (token.isBlank()) { + return Response.status(Response.Status.BAD_REQUEST).build(); + } + + //401(トークンが無効です) + if (!userRepository.checkToken(userId, token)) {//トークンが通らなかった時 + return Response.status(Response.Status.UNAUTHORIZED).build(); + } + + // 200 + ArrayList 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, @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(); + } + + boolean isDeleted = friendService.removeFriendRequest(receiverToken, friendRequestId); + if (isDeleted) { + return Response.status(Response.Status.OK).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } } }