diff --git a/src/main/java/org/ntlab/citrusserver/repositories/AccountManager.java b/src/main/java/org/ntlab/citrusserver/repositories/AccountManager.java index bd65aae..602395f 100644 --- a/src/main/java/org/ntlab/citrusserver/repositories/AccountManager.java +++ b/src/main/java/org/ntlab/citrusserver/repositories/AccountManager.java @@ -19,14 +19,16 @@ // account_idとpasswordを設定し新しいアカウントを作成する(POST) public String createAccount(String accountId, String password) { - UUID str = UUID.randomUUID(); - String token = str.toString(); - Account account = new Account(accountId, password); if(!accounts.containsKey(accountId)) { + UUID str = UUID.randomUUID(); + String token = str.toString(); + Account account = new Account(accountId, password); accounts.put(accountId, account); accountToken.put(accountId, token); //accountIDとtokenをHashMapに入れる + return token; + } else { + return null; } - return token; } //accountIdとtokenを比較してtrueかfalseを返す diff --git a/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java b/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java index dba0fae..f1ae5e7 100644 --- a/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java +++ b/src/main/java/org/ntlab/citrusserver/resources/AccountsRest.java @@ -51,6 +51,10 @@ throw new WebApplicationException(response.build()); } token = accountManager.createAccount(accountId, password); + if (token == null){ + var response = Response.status(Response.Status.CONFLICT).entity("id '" + accountId + "' は既に存在します");//404 + throw new WebApplicationException(response.build()); + } return token; } diff --git a/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java b/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java index 3398b0b..6e8982c 100644 --- a/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java +++ b/src/main/java/org/ntlab/citrusserver/resources/BooksRest.java @@ -39,19 +39,9 @@ @Produces(MediaType.APPLICATION_JSON) public HashMap getBooks(@PathParam("account_id") String account_id, @QueryParam("token") String token){ - if(accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - return bookManager.getBooks(account_id); - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + return bookManager.getBooks(account_id); } @Path("/{account_id}/books") @@ -60,19 +50,9 @@ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) // postmanのbodyに入力する値がある時 public Book createBook(@PathParam("account_id") String account_id, @FormParam("title") String title, @FormParam("color") String color, @FormParam("publicity") Boolean publicity, @FormParam("token") String token) { - if (accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else { - return bookManager.createBook(account_id, title, color, publicity); - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + return bookManager.createBook(account_id, title, color, publicity); } @@ -83,19 +63,9 @@ @Produces(MediaType.APPLICATION_JSON) public Book getBook(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @QueryParam("token") String token){ - if (accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - return bookManager.getBook(account_id, book_id); - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + return bookManager.getBook(account_id, book_id); } /// 本の削除 @Path("/{account_id}/books/{book_id}") @@ -104,21 +74,11 @@ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String deleteBook(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @QueryParam("token") String token){ - if(accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - todoManager.deleteAllTodosByBookId(account_id, book_id);//削除時、Todoも消す - bookManager.deleteBook(account_id, book_id); - return "success"; - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + todoManager.deleteAllTodosByBookId(account_id, book_id);//削除時、Todoも消す + bookManager.deleteBook(account_id, book_id); + return "success"; } /// /{account_id}/books/{book_id}/title @@ -128,19 +88,9 @@ @Produces(MediaType.TEXT_PLAIN) public String getTitle(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @QueryParam("token") String token){ - if (accountManager.getAccount(account_id) == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - return bookManager.getTitle(account_id, book_id); - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + return bookManager.getTitle(account_id, book_id); } /// 本のタイトル変更 @@ -150,20 +100,10 @@ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String putTitle(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @FormParam("title") String title, @FormParam("token") String token){ - if(accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - bookManager.putTitle(account_id, book_id, title); - return "success"; - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + bookManager.putTitle(account_id, book_id, title); + return "success"; } /// /accounts/{account_id}/books/{book_id}/public @@ -173,19 +113,9 @@ @Produces(MediaType.TEXT_PLAIN) public Boolean getPublicity(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @QueryParam("token") String token){ - if (accountManager.getAccount(account_id) == null) { - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - return bookManager.getPublicity(account_id, book_id); - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + return bookManager.getPublicity(account_id, book_id); } /// 公開情報を変更する @@ -195,20 +125,10 @@ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String putPublicity(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @FormParam("publicity") Boolean publicity, @FormParam("token") String token){ - if(accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - bookManager.putPublicity(account_id, book_id, publicity); - return "success"; - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + bookManager.putPublicity(account_id, book_id, publicity); + return "success"; } /// /accounts/{account_id}/books/{book_id}/color @@ -218,24 +138,27 @@ @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String putColor(@PathParam("account_id") String account_id, @PathParam("book_id") Integer book_id, @FormParam("color") String color, @FormParam("token") String token){ - if(accountManager.getAccount(account_id) == null){ - var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); - throw new WebApplicationException(response.build()); - } - else{ - if(!accountManager.checkToken(account_id, token)) { - var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); - throw new WebApplicationException(response.build()); - } - else{ - bookManager.putColor(account_id, book_id, color); - return "success"; - } - } + accountCheck(account_id); + tokenCheck(account_id, token); + bookManager.putColor(account_id, book_id, color); + return "success"; } ///--------------------------------------------------------------------- ///private ///--------------------------------------------------------------------- + private void accountCheck(String account_id){ + if(accountManager.getAccount(account_id) == null){ + var response = Response.status(Response.Status.NOT_FOUND).entity("アカウントが見つかりません"); + throw new WebApplicationException(response.build()); + } + } + + private void tokenCheck(String account_id, String token){ + if(!accountManager.checkToken(account_id, token)) { + var response = Response.status(Response.Status.FORBIDDEN).entity("認証失敗"); + throw new WebApplicationException(response.build()); + } + } } \ No newline at end of file diff --git a/src/main/java/org/ntlab/citrusserver/resources/PublicBooksRest.java b/src/main/java/org/ntlab/citrusserver/resources/PublicBooksRest.java index 8f5aac4..0ca017f 100644 --- a/src/main/java/org/ntlab/citrusserver/resources/PublicBooksRest.java +++ b/src/main/java/org/ntlab/citrusserver/resources/PublicBooksRest.java @@ -27,30 +27,30 @@ } - //検索条件を指定して本を検索(アカウントかタイトルか両方) + //検索条件を指定して本を検索(アカウントかタイトルか両方 ソート可能) @Path("/search") @GET @Produces(MediaType.APPLICATION_JSON) public ArrayList searchBooksByTitleAndAccount(@QueryParam("search_title") String search_title, @QueryParam("search_account_id") String search_account_id, @QueryParam("sort_by") Integer sort_by) { - if(sort_by == null) { - if (search_title != null && search_account_id != null) { + if(sort_by == null) { //ソートしない場合 + if (search_title != null && search_account_id != null) { //タイトルとアカウントIDでの検索 return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id); - } else if (search_title != null) { + } else if (search_title != null) { //タイトルのみでの検索 return publicBookManager.searchBooksByTitle(search_title); - } else if (search_account_id != null) { + } else if (search_account_id != null) { //アカウントIDのみでの検索 return publicBookManager.searchBooksByAccount(search_account_id); - } else { + } else { //タイトルもアカウントIDもない場合(すべての本を返す) return publicBookManager.getAllPublicBooks(); } - } else { - if(search_title != null && search_account_id != null) { + } else { //ソートする場合 + if(search_title != null && search_account_id != null) { //タイトルとアカウントIDでの検索 return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id, sort_by); - } else if(search_title != null) { + } else if(search_title != null) { //タイトルのみでの検索 return publicBookManager.searchBooksByTitle(search_title, sort_by); - } else if(search_account_id != null) { + } else if(search_account_id != null) { //アカウントIDのみでの検索 return publicBookManager.searchBooksByAccount(search_account_id, sort_by); - } else { + } else { //タイトルもアカウントIDもない場合(すべての本を返す) return publicBookManager.getAllPublicBooks(); } }