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 account_id, @FormParam("password") String password) { String token; token = accountManager.newAccount(account_id, 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 account_id){ //account_idを渡してintroductionが返ってくる String ac = accountManager.AccountIntro(account_id); return ac; } @PUT ///////// // @Path("/accounts/{account_id}/photo") ////画像を返す // @GET // public String getAccount(@PathParam("account_id") String account_id){ //account_idを渡してManegerから値が返ってくる // Account ac = accountManager.getAccount(account_id); // return ac.getPhoto(); // } // // @PUT ///////// @Path("/accounts/{account_id}/favorites") //お気に入りの本のリストを返す @GET @Produces(MediaType.APPLICATION_JSON) public ArrayList<HashMap<String, String>> favoriteBook(@PathParam("account_id") String account_id, @QueryParam("token")String token){ return accountManager.favoriteBook(account_id,token); } //////// @Path("/accounts/{account_id}/favorites/{other_account_id}") //お気に入りの本のリストを返す @GET @Produces(MediaType.APPLICATION_JSON) public ArrayList<Integer> FavoriteBook(@PathParam("account_id") String account_id,@PathParam("other_account_id") String other_account_id,@QueryParam("token")String token){ //account_idを渡してManegerから値が返ってくる return accountManager.FavoriteBook(account_id,other_account_id,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 account_id),@FormParam("password") String password) { accounts.put(account_id, password); } }