using System; using System.Collections.Generic; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; namespace SessionZeroClient.API; public class ApiHandler : IApiHandler { private readonly HttpClient _httpClient; public ApiHandler() { _httpClient = new HttpClient(); } public async Task Register(string url, string username, string email, string password) { var apiString = $"{url}/api/Auth/register"; var requestBody = new Dictionary { {"username", username}, {"email", email}, {"password", password} }; var jsonBody = JsonSerializer.Serialize(requestBody); var content = new StringContent(jsonBody, System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(apiString, content); if (!response.IsSuccessStatusCode) { throw new HttpRequestException($"Register failed: {response.StatusCode}"); } var responseString = await response.Content.ReadAsStringAsync(); return responseString; } public async Task Login(string url, string username, string password) { var apiString = $"{url}/api/Auth/login"; var requestBody = new Dictionary { {"username", username}, {"password", password} }; var jsonBody = JsonSerializer.Serialize(requestBody); var content = new StringContent(jsonBody, System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(apiString, content); if (!response.IsSuccessStatusCode) { throw new HttpRequestException($"Login failed: {response.StatusCode}"); } var responseString = await response.Content.ReadAsStringAsync(); return responseString; } }