From e0c6126a9e502bc2b061335e6083838aef96f223 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sun, 13 Sep 2020 16:39:30 -0500 Subject: [PATCH] =?UTF-8?q?refactor(clients):=20=E2=99=BB=F0=9F=93=A6=20ad?= =?UTF-8?q?d=20Refit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 1 + .../BaseApiClient.cs | 25 ----------------- .../ConfigurationExtensions.cs | 6 +++-- .../Directory/DirectoryApiApiClient.cs | 27 ------------------- ...lterLists.SharedKernel.Apis.Clients.csproj | 3 +-- .../{Directory => }/IDirectoryApiClient.cs | 6 ++++- 6 files changed, 11 insertions(+), 57 deletions(-) delete mode 100644 services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/BaseApiClient.cs delete mode 100644 services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/DirectoryApiApiClient.cs rename services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/{Directory => }/IDirectoryApiClient.cs (77%) diff --git a/docker-compose.yml b/docker-compose.yml index d6effee06..545734abd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,7 @@ services: image: ghcr.io/collinbarrett/filterlists-archival-api restart: always networks: + - reverse-proxy - archival depends_on: - archival-scheduling-db diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/BaseApiClient.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/BaseApiClient.cs deleted file mode 100644 index 0db198a26..000000000 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/BaseApiClient.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Net.Http; -using System.Text.Json; -using System.Threading; -using System.Threading.Tasks; - -namespace FilterLists.SharedKernel.Apis.Clients -{ - internal abstract class BaseApiClient - { - protected BaseApiClient(HttpClient httpClient) - { - Client = httpClient; - } - - protected HttpClient Client { get; } - - protected async Task GetAsync(string requestUri, CancellationToken cancellationToken = default) - { - var response = await Client.GetAsync(requestUri, cancellationToken); - response.EnsureSuccessStatusCode(); - await using var responseStream = await response.Content.ReadAsStreamAsync(); - return await JsonSerializer.DeserializeAsync(responseStream, cancellationToken: cancellationToken); - } - } -} diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs index b14f38e5a..b5f7a6799 100644 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/ConfigurationExtensions.cs @@ -1,5 +1,6 @@ -using FilterLists.SharedKernel.Apis.Clients.Directory; +using System; using Microsoft.Extensions.DependencyInjection; +using Refit; namespace FilterLists.SharedKernel.Apis.Clients { @@ -7,7 +8,8 @@ public static class ConfigurationExtensions { public static void AddApiClients(this IServiceCollection services) { - services.AddHttpClient(); + services.AddRefitClient() + .ConfigureHttpClient(c => c.BaseAddress = new Uri("http://directory-api/api")); } } } diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/DirectoryApiApiClient.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/DirectoryApiApiClient.cs deleted file mode 100644 index e6a08aa73..000000000 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/DirectoryApiApiClient.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using FilterLists.SharedKernel.Apis.Contracts.Directory; - -namespace FilterLists.SharedKernel.Apis.Clients.Directory -{ - internal sealed class DirectoryApiApiClient : BaseApiClient, IDirectoryApiClient - { - public DirectoryApiApiClient(HttpClient httpClient, Uri directoryApiBaseUrl) : base(httpClient) - { - Client.BaseAddress = directoryApiBaseUrl; - } - - public async Task> GetListsAsync(CancellationToken cancellationToken = default) - { - return await GetAsync>("/lists", cancellationToken); - } - - public async Task GetListDetailsAsync(int id, CancellationToken cancellationToken = default) - { - return await GetAsync($"/lists/{id}", cancellationToken); - } - } -} diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj index 3508a2c3a..f959b1574 100644 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/FilterLists.SharedKernel.Apis.Clients.csproj @@ -21,8 +21,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - + diff --git a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/IDirectoryApiClient.cs b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/IDirectoryApiClient.cs similarity index 77% rename from services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/IDirectoryApiClient.cs rename to services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/IDirectoryApiClient.cs index 659442cb4..1332b13df 100644 --- a/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/Directory/IDirectoryApiClient.cs +++ b/services/SharedKernel/FilterLists.SharedKernel.Apis.Clients/IDirectoryApiClient.cs @@ -2,12 +2,16 @@ using System.Threading; using System.Threading.Tasks; using FilterLists.SharedKernel.Apis.Contracts.Directory; +using Refit; -namespace FilterLists.SharedKernel.Apis.Clients.Directory +namespace FilterLists.SharedKernel.Apis.Clients { public interface IDirectoryApiClient { + [Get("/lists")] Task> GetListsAsync(CancellationToken cancellationToken = default); + + [Get("/lists/{id}")] Task GetListDetailsAsync(int id, CancellationToken cancellationToken = default); } }