using System.Net.Http; using System.Net.Http.Json; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using AccessQueueService.Models; using AccessQueueService.Services; namespace AccessQueuePlayground.Services { public class AccessQueueApiService : IAccessService { private readonly HttpClient _httpClient; private readonly string _serviceUrl; public AccessQueueStatus Status => throw new NotImplementedException(); public AccessQueueApiService(HttpClient httpClient, IConfiguration config) { _httpClient = httpClient; _serviceUrl = config["AccessQueuePlayground:ServiceUrl"]?.TrimEnd('/') ?? "https://localhost:7291"; } public async Task RequestAccess(string userId) { return await _httpClient.GetFromJsonAsync($"{_serviceUrl}/access/{userId}"); } public async Task RevokeAccess(string userId) { var response = await _httpClient.DeleteAsync($"{_serviceUrl}/access/{userId}"); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync(); return result; } return false; } public Task DeleteExpiredTickets() { throw new NotImplementedException(); } public AccessQueueConfig GetConfiguration() { return _httpClient.GetFromJsonAsync($"{_serviceUrl}/config").Result; } public void UpdateConfiguration(AccessQueueConfig config) { _ = _httpClient.PostAsJsonAsync($"{_serviceUrl}/config", config).Result; } public void PatchConfiguration(AccessQueueConfig partialConfig) { throw new NotImplementedException(); } } }