using DysonNetwork.Pass.Features.Account; using DysonNetwork.Pass.Features.Auth; using DysonNetwork.Sphere.Models; using System.Net.Http.Json; namespace DysonNetwork.Sphere.Services.PassClient; public class PassClient(HttpClient httpClient) { public async Task LoginAsync(LoginRequest request) { var response = await httpClient.PostAsJsonAsync("api/auth/login", request); response.EnsureSuccessStatusCode(); return (await response.Content.ReadFromJsonAsync())!; } public async Task GetAccountByIdAsync(Guid accountId) { var response = await httpClient.GetAsync($"api/account/{accountId}"); response.EnsureSuccessStatusCode(); return (await response.Content.ReadFromJsonAsync())!; } public async Task GetAccountByUsernameAsync(string username) { var response = await httpClient.GetAsync($"api/account/by-username/{username}"); response.EnsureSuccessStatusCode(); return (await response.Content.ReadFromJsonAsync())!; } public async Task RegisterAsync(RegisterRequest request) { var response = await httpClient.PostAsJsonAsync("api/account/register", request); response.EnsureSuccessStatusCode(); return (await response.Content.ReadFromJsonAsync())!; } public async Task ChangePasswordAsync(ChangePasswordRequest request) { var response = await httpClient.PostAsJsonAsync("api/account/change-password", request); response.EnsureSuccessStatusCode(); } public async Task ResetPasswordAsync(ResetPasswordRequest request) { var response = await httpClient.PostAsJsonAsync("api/auth/reset-password", request); response.EnsureSuccessStatusCode(); } public async Task VerifyEmailAsync(VerifyEmailRequest request) { var response = await httpClient.PostAsJsonAsync("api/account/verify-email", request); response.EnsureSuccessStatusCode(); } public async Task SendVerificationEmailAsync(SendVerificationEmailRequest request) { var response = await httpClient.PostAsJsonAsync("api/account/send-verification-email", request); response.EnsureSuccessStatusCode(); } public async Task DeleteAccountAsync(DeleteAccountRequest request) { var response = await httpClient.PostAsJsonAsync("api/account/delete", request); response.EnsureSuccessStatusCode(); } }