diff --git a/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java b/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java index 6ac3037..a4da893 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/ActivitiesResource.java @@ -3,11 +3,14 @@ import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; +import org.ntlab.tampoposerver.models.Activity; import org.ntlab.tampoposerver.repositories.ActivityRepository; import org.ntlab.tampoposerver.repositories.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalTime; + @Path("/users") @Component @@ -23,17 +26,34 @@ } @Path("/{user-id}/activities") - @GET - public String getActivities(@PathParam("user-id") String userId, @QueryParam("filter") String filter) { - return "Hello World!!"; + @GET //アカウントの全アクティビティを取得 + public Response getActivities(@PathParam("user-id") String userId, + @QueryParam("filter") String filter) { + //失敗 + //400(ユーザーnull or 空だったら) + if (userId == null || userId.isEmpty()) { + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + Activity activity = activityRepository.getActivity(userId, filter); + + //404(アクティビティが存在しないとき) + if (activity == null) { //取得した最新のアクティビティがnullのとき + var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + //200(アカウントの全アクティビティを取得) + return Response.status(Response.Status.OK).entity(activity).build(); } @Path("/{user-id}/activities") - @POST + @POST //新規のアクティビティを投稿する @Consumes(MediaType.APPLICATION_FORM_URLENCODED)//bodyに入力する値がある時 public Response postActivities(@PathParam("user-id") String userId, - @FormParam("token") String token, - @FormParam("new-activity") String newActivity) { + @FormParam("token") String token, + @FormParam("new-activity") String newActivity) { //失敗 //400(不正なリクエスト) if (token == null || token.isEmpty() || newActivity == null || newActivity.isEmpty()) { //トークン or 新アクティビティがnull or 空だったら @@ -48,9 +68,9 @@ } - //404(新しいアクティビティのテキストが存在しないとき) - if (!activityRepository.isValidActivity(newActivity)) { //新しいアクティビティが不正な内容 なっちゃんと相談 - var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + //404(ユーザーが存在しないとき) + if (userRepository.getUser(userId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーが存在しません"); throw new WebApplicationException(response.build()); } @@ -61,50 +81,57 @@ //成功 //200(アクティビティを作成) - activityRepository.addActivity(); //なっちゃんと相談 - return Response.status(Response.Status.OK).build(); //インスタンス(Response.status(Response.Status.OK))を実際に返すデータとして構築(アプリ側が読めるようにする)→build - - + LocalTime time = LocalTime.now(); //ローカルの時間を取得 + Activity addedActivity = activityRepository.addActivity(userId, newActivity, time.toString()); //追加されたアクティビティの情報を、あとで使えるように addedActivity に入れている + return Response.status(Response.Status.OK).entity(addedActivity.getActivityId()).build(); } @Path("/{user-id}/activities/{activity-id}") - @GET - public String getActivity(@PathParam("user-id") String userId, @PathParam("activity-id") String activityId) { - return "Hello World!!"; - } + @GET //アカウントの単一アクティビティを取得する + public Response getActivity(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId) { - @Path("/{user-id}/activities/{activity-id}") - @DELETE - public void deleteActivity(@PathParam("user-id") String userId, - @PathParam("activity-id") String activityId, - @QueryParam("token") String token) { - if (userRepository.checkToken(accountId, token)) { - userRepository.deleteAccount(accountId, token, password); - return; - } - //失敗 //400(不正なリクエスト) - if (token == null || token.isEmpty() || newActivity == null || newActivity.isEmpty()) { //トークン or 新アクティビティがnull or 空だったら + if (activityId == null || activityId.isEmpty()) { //アクティビティがnull or 空だったら var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); throw new WebApplicationException(response.build()); } - //401(未認証) - if (!userRepository.exists(userId)) { //対象のユーザーが存在しない(認証されていない) はるかが作成したメソッドを使わないとだめだから相談 - var response = Response.status(Response.Status.UNAUTHORIZED).entity("未認証"); + //404(ユーザーが存在しないとき) + if (userRepository.getUser(userId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーが存在しません"); throw new WebApplicationException(response.build()); } - //403(トークンの不一致) - if (!userRepository.checkToken(userId, token)) { //トークンの内容が間違っている(アクセス権限がない) はるかと相談 - var response = Response.status(Response.Status.FORBIDDEN).entity("トークンの不一致"); + //200(アカウントの単一アクティビティを取得) + activityRepository.getActivity(userId, activityId); + return Response.status(Response.Status.OK).build(); + } + + @Path("/{user-id}/activities/{activity-id}") + @DELETE //アカウントの単一アクティビティを削除する + public Response deleteActivity(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId, + @QueryParam("token") String token) { + + + //失敗 + //400(トークン or 新アクティビティがnull or 空だったら) + if (token == null || token.isEmpty() || activityId == null || activityId.isEmpty()) { + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //403(ユーザーまたはトークンが存在しないとき) + if (!userRepository.checkToken(userId, token)) { + var response = Response.status(Response.Status.FORBIDDEN).entity("認証エラー"); throw new WebApplicationException(response.build()); } - //404(新しいアクティビティのテキストが存在しないとき) - if (!activityRepository.isValidActivity(newActivity)) { //新しいアクティビティが不正な内容 なっちゃんと相談 - var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + //404(ユーザー存在しないとき) + if (userRepository.getUser(userId) == null) { + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーが存在しません"); throw new WebApplicationException(response.build()); } @@ -114,28 +141,79 @@ */ //成功 - //200(アクティビティを作成) - activityRepository.addActivity(); //なっちゃんと相談 - return Response.status(Response.Status.OK).build(); //インスタンス(Response.status(Response.Status.OK))を実際に返すデータとして構築(アプリ側が読めるようにする)→build - + //200(アクティビティを削除) + activityRepository.deleteActivity(userId, activityId); + return Response.status(Response.Status.OK).build(); } @Path("/{user-id}/activities/{activity-id}/text") - @GET - public String getActivityText(@PathParam("user-id") String userId, @PathParam("activity-id") String activityId) { - return "Hello World!!"; + @GET //アカウントの単一アクティビティの文章の内容を取得する + public Response getActivityText(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId) { + //失敗 + //400(不正なリクエスト) + if (activityId == null || activityId.isEmpty()) { //アクティビティがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //404(アクティビティが存在しないとき) + if (activityRepository.getActivity(userId, activityId) == null) { //取得したアクティビティがnullのとき(不正な内容のとき) + var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + //成功 + //200(アカウントの単一アクティビティの文章の内容を取得) + activityRepository.getActivity(userId, activityId); + return Response.status(Response.Status.OK).build(); } @Path("/{user-id}/activities/{activity-id}/updated-time") - @GET - public String getActivityUpdatedTime(@PathParam("user-id") String userId, @PathParam("activity-id") String activityId) { - return "Hello World!!"; + @GET //単一アクティビティの投稿時間を取得する + public Response getActivityUpdatedTime(@PathParam("user-id") String userId, + @PathParam("activity-id") String activityId) { + //失敗 + //400(不正なリクエスト) + if (activityId == null || activityId.isEmpty()) { //アクティビティがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + //404(アクティビティが存在しないとき) + if (activityRepository.getActivity(userId, activityId) == null) { //取得したアクティビティがnullのとき(不正な内容のとき) + var response = Response.status(Response.Status.NOT_FOUND).entity("アクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + //成功 + //200(単一アクティビティの投稿時間を取得する) + activityRepository.getActivityUpdateTime(userId, activityId); + return Response.status(Response.Status.OK).build(); } - @Path("/{user-id}/activities/{activity-id}/last-updated-time") - @GET - public String getActivityLastUpdatedTime(@PathParam("user-id") String userId) { - return "Hello World!!"; + @Path("/{user-id}/activities/last-updated-time") + @GET //最新のアクティビティの投稿時間を取得する + public Response getActivityLastUpdatedTime(@PathParam("user-id") String userId) { + //失敗 + //400(不正なリクエスト) + if (userId == null || userId.isEmpty()) { //ユーザーがnull or 空だったら + var response = Response.status(Response.Status.BAD_REQUEST).entity("不正なリクエスト"); + throw new WebApplicationException(response.build()); + } + + + //404(アクティビティが存在しないとき) + if (activityRepository.getActivitiesForUser(userId).isEmpty() || userRepository.getUser(userId) == null) { //ユーザの全アクティビティ情報を保存するリストが空のとき + var response = Response.status(Response.Status.NOT_FOUND).entity("ユーザーかアクティビティが存在しません"); + throw new WebApplicationException(response.build()); + } + + + //成功 + //200(最新のアクティビティの投稿時間を取得する) + activityRepository.getLastUpdatedTime(userId); + return Response.status(Response.Status.OK).build(); } } \ No newline at end of file