using SecureBank.Common; using SecureBank.Common.Accounts; using SecureBank.Website.API; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SecureBank.Website.Services { public interface IAccountsService { Task> CreateAccount(CreateAccountRequest data); Task> GetPasswordVariant(int accountId); Task> Authentication(int accountId, AuthenticationRequest data); Task> AuthenticationRefresh(); } public class AccountsService : IAccountsService { #region FIELDS private readonly APIClient _apiClient; private readonly APIEndpointsConfiguration _configuration; #endregion #region CONSTRUCTORS public AccountsService(APIClient apiClient, APIEndpointsConfiguration configuration) { _apiClient = apiClient; _configuration = configuration; } #endregion #region METHODS public async Task> CreateAccount(CreateAccountRequest data) { return await _apiClient.SendAsync(APIMethodType.POST, _configuration.AccountsCreateAccount, data); } public async Task> GetPasswordVariant(int accountId) { string url = string.Format(_configuration.AccountsGetPasswordVariant, accountId); return await _apiClient.SendAsync(APIMethodType.GET, url); } public async Task> Authentication(int accountId, AuthenticationRequest data) { string url = string.Format(_configuration.AccountsAuthentication, accountId); return await _apiClient.SendAsync(APIMethodType.POST, url, data); } public async Task> AuthenticationRefresh() { return await _apiClient.SendAsync(APIMethodType.POST, _configuration.AccountsAuthenticationRefresh); } #endregion } }