From b61bd9c3669256c103b2a071e49ab62918ced6d6 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Thu, 25 Apr 2024 16:43:32 +0700 Subject: [PATCH] implemented client-side account management --- .../api/repository/AccountRepository.java | 10 +++++++ .../repository/AccountRepositoryImpl.java | 29 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/client-api/src/main/java/ru/dragonestia/picker/api/repository/AccountRepository.java b/client-api/src/main/java/ru/dragonestia/picker/api/repository/AccountRepository.java index ddca960..b0896be 100644 --- a/client-api/src/main/java/ru/dragonestia/picker/api/repository/AccountRepository.java +++ b/client-api/src/main/java/ru/dragonestia/picker/api/repository/AccountRepository.java @@ -1,11 +1,21 @@ package ru.dragonestia.picker.api.repository; import org.jetbrains.annotations.NotNull; +import ru.dragonestia.picker.api.model.account.IAccount; import ru.dragonestia.picker.api.model.account.ResponseAccount; +import java.util.List; import java.util.Optional; public interface AccountRepository { Optional findAccountByUsername(@NotNull String username); + + @NotNull List allAccounts(); + + void createAccount(@NotNull String accountId, @NotNull String password); + + void removeAccount(@NotNull IAccount account); + + void setPermissions(@NotNull IAccount account, @NotNull List permissions); } diff --git a/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/AccountRepositoryImpl.java b/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/AccountRepositoryImpl.java index 29f2e24..3609c08 100644 --- a/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/AccountRepositoryImpl.java +++ b/client-impl/src/main/java/ru/dragonestia/picker/api/impl/repository/AccountRepositoryImpl.java @@ -6,9 +6,12 @@ import ru.dragonestia.picker.api.exception.AccountDoesNotExistsException; import ru.dragonestia.picker.api.impl.RoomPickerClient; import ru.dragonestia.picker.api.impl.util.RestTemplate; import ru.dragonestia.picker.api.impl.util.type.HttpMethod; +import ru.dragonestia.picker.api.model.account.IAccount; import ru.dragonestia.picker.api.model.account.ResponseAccount; import ru.dragonestia.picker.api.repository.AccountRepository; +import ru.dragonestia.picker.api.repository.response.AllAccountsResponse; +import java.util.List; import java.util.Optional; public class AccountRepositoryImpl implements AccountRepository { @@ -29,4 +32,30 @@ public class AccountRepositoryImpl implements AccountRepository { return Optional.empty(); } } + + @Override + public @NotNull List allAccounts() { + var response = rest.query("/accounts", HttpMethod.GET, AllAccountsResponse.class); + return response.accounts(); + } + + @Override + public void createAccount(@NotNull String accountId, @NotNull String password) { + rest.query("/accounts", HttpMethod.POST, params -> { + params.put("username", accountId); + params.put("password", password); + }); + } + + @Override + public void removeAccount(@NotNull IAccount account) { + rest.query("/accounts/" + account.getUsername(), HttpMethod.DELETE); + } + + @Override + public void setPermissions(@NotNull IAccount account, @NotNull List permissions) { + rest.query("/accounts/" + account.getUsername(), HttpMethod.PUT, params -> { + params.put("permissions", String.join(",", permissions)); + }); + } }