using Newsbot.Collector.Client.Domain.Dto; using Newtonsoft.Json; namespace Newsbot.Collector.Client; public interface ISourcesClient { public Task GetAsync(Guid id); public SourcesDto Get(Guid id); public Task> ListAsync(); public List List(); } public class SourcesClient : ISourcesClient { private HttpClient HttpClient { get; set; } private string InstanceUri { get; set; } public SourcesClient(HttpClient httpClient, string instanceUri) { HttpClient = httpClient; InstanceUri = instanceUri; } public async Task GetAsync(Guid id) { var res = await HttpClient.GetAsync(new Uri($"{InstanceUri}/api/sources/{id}")); var content = await res.Content.ReadAsStringAsync(); var payload = JsonConvert.DeserializeObject(content); payload ??= new SourcesDto(); return payload; } public SourcesDto Get(Guid id) { var res = GetAsync(id); res.Wait(); return res.Result; } public async Task> ListAsync() { var res = await HttpClient.GetAsync(new Uri($"{InstanceUri}/api/sources")); var content = await res.Content.ReadAsStringAsync(); var payload = JsonConvert.DeserializeObject>(content); payload ??= new List(); return payload; } public List List() { var res = ListAsync(); res.Wait(); return res.Result; } }