package org.ntlab.citrusserver.resources; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import org.ntlab.citrusserver.entities.Account; import org.ntlab.citrusserver.repositories.AccountManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; @Path("/accounts") @Component //accountRestのインスタンスを一個作る public class AccountsRest { private final AccountManager accountManager; //finalは書き換えられない @Autowired//springbootの決まり public AccountsRest(AccountManager am) { accountManager = am; } //accountの一覧を返す @GET @Produces(MediaType.APPLICATION_JSON) public Set<String> getAccount(){ return accountManager.getAccountsID(); } //accountの新規作成 @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED)//bodyに入力する値がある時 public String signup(@FormParam("account_id") String accountId, @FormParam("password") String password) { String token; token = accountManager.createAccount(accountId, password); return token; } ////////// @Path("/{account_id}") //account_idの情報を返す”introduction”と[本] @GET @Produces(MediaType.APPLICATION_JSON) public Account getAccountInfo(@PathParam("account_id") String accountId){ //account_idを渡してManegerから値が返ってくる Account ac = accountManager.getAccount(accountId); return ac; } // @DELETE /////// // @Path("/{account_id}/password") //// // @PUT // // ///////// @Path("/accounts/{account_id}/introduction") //自己紹介を返す @GET @Produces(MediaType.APPLICATION_JSON) public String getAccount(@PathParam("account_id") String accountId){ //account_idを渡してintroductionが返ってくる String ac = accountManager.AccountIntro(accountId); return ac; } // @PUT ///////// // @Path("/accounts/{account_id}/photo") // //画像を返す // @GET // public String getAccount(@PathParam("account_id") String accountId){ //account_idを渡してManegerから値が返ってくる // Account ac = accountManager.getAccount(accountId); // return ac.getPhoto(); // } // // @PUT ///////// @Path("/accounts/{account_id}/favorites") //指定されたIDのお気に入りの本のリストを返す @GET @Produces(MediaType.APPLICATION_JSON) public ArrayList<HashMap<String, String>> favoriteBook(@PathParam("account_id") String accountId, @QueryParam("token")String token){ return accountManager.favoriteBook(accountId,token); } //////// @Path("/accounts/{account_id}/favorites/{other_account_id}") //指定されたIDのお気に入りの本のリストを返す(指定した人物) @GET @Produces(MediaType.APPLICATION_JSON) public ArrayList<Integer> FavoriteBook(@PathParam("account_id") String accountId,@PathParam("other_account_id") String otherAccountId,@QueryParam("token")String token){ //account_idを渡してManegerから値が返ってくる return accountManager.FavoriteBook(accountId,otherAccountId,token); } ////////// // @Path("/accounts/{account_id}/favorites/{other_account_id}/{book_id}") // @DELETE // @PUT //////// // @Path("/accounts/{account_id}/login") // @POST // @Consumes(MediaType.APPLICATION_JSON) // public void login(@PathParam("account_id") String accountId,@FormParam("password") String password) { // accountManager.put(accountId, password); // } }