diff --git a/src/main/java/org/ntlab/nemophila/resources/accounts/RequestedRest.java b/src/main/java/org/ntlab/nemophila/resources/accounts/RequestedRest.java index d711660..6d8f9cb 100644 --- a/src/main/java/org/ntlab/nemophila/resources/accounts/RequestedRest.java +++ b/src/main/java/org/ntlab/nemophila/resources/accounts/RequestedRest.java @@ -6,6 +6,7 @@ import org.springframework.stereotype.Component; import javax.ws.rs.*; +import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.Collection; @@ -16,7 +17,7 @@ @GET @Path("/{uid}/requested") public Collection getRequested(@PathParam("uid") String uid) { - + //uidが申請を受けているidの一覧を返す AccountManager am = AccountManager.getInstance(); Account ac = am.getAccount(uid); FriendManager fm = ac.getFriendManager(); @@ -34,6 +35,23 @@ @DELETE @Path("/{uid}/requested/{requested_id}") public void putRequestingId(@PathParam("uid") String uid, @PathParam("requested_id") String requested_id, @FormParam("token") String token){ + //uidがrequested_idから受けた申請を拒否する + AccountManager am = AccountManager.getInstance(); //AccountManagerを取得 + Account ac = am.getAccount(uid); //uidからAccountインスタンスを取得 + Account acFrom = am.getAccount(requested_id); //requested_idから申請元のAccountインスタンスを取得 + FriendManager fm = ac.getFriendManager(); //uidのAccountのFriendManagerを取得 + FriendManager fmFrom = acFrom.getFriendManager(); //申請元のAccountのFriendManagerを取得 + + //入力されたtokenがuidのものと一致した時、uidのrequestedにある申請元のAccountを、申請元のrequestingにあるuidのAccountを削除する + String acToken = ac.getToken(); + if(token.equals(acToken)) { + fm.removeRequested(acFrom); + fmFrom.removeRequesting(ac); + }else{ + var response = Response.status(Response.Status.NO_CONTENT); + response.status(401).entity("認証に失敗しました"); + throw new WebApplicationException(response.build()); + } } }