From 6916d696592d3f456762387d637dc35f7ce69941 Mon Sep 17 00:00:00 2001 From: Mitchell Currey Date: Thu, 18 May 2023 15:21:49 +0100 Subject: [PATCH 1/4] Add ability for flexible config inside startup.cs --- README.md | 45 ++++++++++++++++--- .../API/IServiceCollectionExtensions.cs | 25 ++++++++--- .../Services/ForburyAuthenticationService.cs | 2 +- .../Forbury.Integrations.csproj | 2 +- 4 files changed, 60 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 64a5f08..e740975 100644 --- a/README.md +++ b/README.md @@ -24,17 +24,17 @@ In order to get started, please follow these steps. _Package Manager_ ``` -Install-Package Forbury.Integrations -Version 1.5.0 +Install-Package Forbury.Integrations -Version 1.7.0 ``` _.NET CLI_ ``` -dotnet add PROJECT package Forbury.Integrations --version 1.5.0 +dotnet add PROJECT package Forbury.Integrations --version 1.7.0 ``` _PackageReference_ ``` - + ``` For a full list of the latest releases, please see the [package release page](https://www.nuget.org/packages/Forbury.Integrations). @@ -72,13 +72,48 @@ If you only have one client, you **will not** need to choose which client to mak public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) -{ +{ services.AddForburyApi(Configuration); ... } ``` -Alternatively, if you are using the new .NET 6 design **without** a `Startup.cs`, add the following inside your `Program.cs` _(.NET 6)_. +Alternatively, you are able to create your own configuration object and pass that in as parameter instead. +This gives you the flexibility to build your configuration outside the standard `appsettings.json` structure. + +```C# +public void ConfigureServices(IServiceCollection services) +{ + var forburyConfiguration = new ForburyConfiguration() + { + Api = new ApiConfiguration() + { + Url = "https://api.forbury.com/", + Version = 1 + }, + Authentication = new AuthenticationConfiguration() + { + Url = "https://account.forbury.com/", + Clients = new Dictionary() + { + { + "UNIQUE_CLIENT_NAME", + new AuthenticationClientConfiguration() + { + ClientId = "YOUR_CLIENT_ID", + ClientSecret = "YOUR_CLIENT_SECRET" + } + } + } + } + }; + + services.AddForburyApi(forburyConfiguration); + ... +} +``` + +_Note:_ If you are using the new .NET 6 design **without** a `Startup.cs`, add the following inside your `Program.cs` _(.NET 6)_. ```C# using Forbury.Integrations.API; diff --git a/src/Forbury.Integrations/API/IServiceCollectionExtensions.cs b/src/Forbury.Integrations/API/IServiceCollectionExtensions.cs index 2bf3174..f541276 100644 --- a/src/Forbury.Integrations/API/IServiceCollectionExtensions.cs +++ b/src/Forbury.Integrations/API/IServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Forbury.Integrations.API.Interfaces; using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.Services; @@ -11,13 +12,22 @@ public static class IServiceCollectionExtensions { public static IServiceCollection AddForburyApi(this IServiceCollection services, IConfiguration configuration) { - services.AddForburyAuthenticationAndConfiguration(configuration); + var forburyConfiguration = new ForburyConfiguration(); + configuration.GetSection("Forbury").Bind(forburyConfiguration); + + services.AddForburyApi(forburyConfiguration); + + return services; + } + + public static IServiceCollection AddForburyApi(this IServiceCollection services, ForburyConfiguration forburyConfiguration) + { + services.AddForburyAuthenticationAndConfiguration(forburyConfiguration); // Leaving blank or "0" will setup all API versions for DI - var apiVersion = int.TryParse(configuration["Forbury:Api:Version"], out int parsedApiVersion) ? - parsedApiVersion : 0; + var apiVersion = forburyConfiguration.Api.Version; - if (apiVersion == 1 || apiVersion == 0) v1.ServiceBuilder.AddForburyServices(services, $"{configuration["Forbury:Api:Url"]}api/v1"); + if (apiVersion == 1 || apiVersion == 0) v1.ServiceBuilder.AddForburyServices(services, $"{forburyConfiguration.Api.Url}api/v1"); return services; } @@ -32,15 +42,16 @@ internal static void AddForburyHttpClient(this IServic }).AddHttpMessageHandler(); } - private static IServiceCollection AddForburyAuthenticationAndConfiguration(this IServiceCollection services, IConfiguration configuration) + private static IServiceCollection AddForburyAuthenticationAndConfiguration(this IServiceCollection services, + ForburyConfiguration forburyConfiguration) { - services.Configure(options => configuration.GetSection("Forbury").Bind(options)); + services.ConfigureOptions(forburyConfiguration); services.AddTransient(); services.AddHttpClient(config => { - config.BaseAddress = new Uri(configuration["Forbury:Authentication:Url"]); + config.BaseAddress = new Uri(forburyConfiguration.Authentication.Url); }); return services; diff --git a/src/Forbury.Integrations/API/Services/ForburyAuthenticationService.cs b/src/Forbury.Integrations/API/Services/ForburyAuthenticationService.cs index d505d59..4b41021 100644 --- a/src/Forbury.Integrations/API/Services/ForburyAuthenticationService.cs +++ b/src/Forbury.Integrations/API/Services/ForburyAuthenticationService.cs @@ -40,7 +40,7 @@ public async Task GetAccessTokenAsync(CancellationToken cancellationToke if (IsAuthorised(customerClient.ClientId)) return _tokens[customerClient.ClientId].AccessToken; - await _tokenSemaphore.WaitAsync(cancellationToken); + await _tokenSemaphore.WaitAsync(cancellationToken); try { diff --git a/src/Forbury.Integrations/Forbury.Integrations.csproj b/src/Forbury.Integrations/Forbury.Integrations.csproj index 8c72881..887a8cd 100644 --- a/src/Forbury.Integrations/Forbury.Integrations.csproj +++ b/src/Forbury.Integrations/Forbury.Integrations.csproj @@ -1,7 +1,7 @@  - 1.6.0 + 1.7.0 Forbury Development Team Forbury This .NET client library provides a quick and easy option for integrating with Forbury APIs. From 624f60a7075c3f7e885a1c9851adfd42ce6c935e Mon Sep 17 00:00:00 2001 From: Mitchell Currey Date: Thu, 11 Jan 2024 11:40:18 +0000 Subject: [PATCH 2/4] Add ability to create client during runtime --- .../API/v1/Clients/ForburyApiClient.cs | 18 +++++++++++++++++- .../API/v1/Clients/ForburyProductApiClient.cs | 7 +++++-- .../API/v1/Clients/ForburyPropertyApiClient.cs | 7 +++++-- .../API/v1/Clients/ForburyTeamApiClient.cs | 7 +++++-- .../v1/Clients/Model/ForburyModelApiClient.cs | 7 +++++-- .../Model/ForburyModelCommercialApiClient.cs | 7 +++++-- .../Model/ForburyModelDatumApiClient.cs | 7 +++++-- .../API/v1/Interfaces/IForburyApiClient.cs | 5 ++++- 8 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/Forbury.Integrations/API/v1/Clients/ForburyApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/ForburyApiClient.cs index a0a9b07..290569d 100644 --- a/src/Forbury.Integrations/API/v1/Clients/ForburyApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/ForburyApiClient.cs @@ -12,6 +12,9 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; +using Microsoft.Extensions.Options; +using Microsoft.Extensions.Configuration; namespace Forbury.Integrations.API.v1.Clients { @@ -21,9 +24,13 @@ public abstract class ForburyApiClient : IForburyApiClient protected readonly HttpClient _httpClient; - public ForburyApiClient(HttpClient httpClient) + private readonly ForburyConfiguration _configuration; + + public ForburyApiClient(HttpClient httpClient, + IOptions configuration) { _httpClient = httpClient; + _configuration = configuration.Value; } public void SetClient(string name) @@ -36,6 +43,15 @@ public void SetClient(string name) _httpClient.DefaultRequestHeaders.Add(Constants.ClientHeaderName, name); } + public void SetClient(string name, AuthenticationClientConfiguration clientConfiguration) + { + // Try remove and then add new client + _configuration.Authentication.Clients.Remove(name); + _configuration.Authentication.Clients.Add(name, clientConfiguration); + + SetClient(name); + } + protected QueryBuilder GetPagedQueryBuilder(int amount, int page) { return new QueryBuilder diff --git a/src/Forbury.Integrations/API/v1/Clients/ForburyProductApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/ForburyProductApiClient.cs index 0b12b82..7138d49 100644 --- a/src/Forbury.Integrations/API/v1/Clients/ForburyProductApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/ForburyProductApiClient.cs @@ -3,18 +3,21 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.v1.Dto.Enums; using Forbury.Integrations.API.v1.Dto.Product; using Forbury.Integrations.API.v1.Interfaces; using Forbury.Integrations.Helpers.Extensions; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Options; namespace Forbury.Integrations.API.v1.Clients { public class ForburyProductApiClient : ForburyApiClient, IForburyProductApiClient { - public ForburyProductApiClient(HttpClient httpClient) : - base(httpClient) + public ForburyProductApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) { } public async Task> GetProducts(CancellationToken cancellationToken = default) diff --git a/src/Forbury.Integrations/API/v1/Clients/ForburyPropertyApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/ForburyPropertyApiClient.cs index fa12aa3..7700e19 100644 --- a/src/Forbury.Integrations/API/v1/Clients/ForburyPropertyApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/ForburyPropertyApiClient.cs @@ -2,19 +2,22 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.v1.Dto; using Forbury.Integrations.API.v1.Dto.Enums; using Forbury.Integrations.API.v1.Dto.Model; using Forbury.Integrations.API.v1.Dto.Property; using Forbury.Integrations.API.v1.Interfaces; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Options; namespace Forbury.Integrations.API.v1.Clients { public class ForburyPropertyApiClient : ForburyApiClient, IForburyPropertyApiClient { - public ForburyPropertyApiClient(HttpClient httpClient) : - base(httpClient) + public ForburyPropertyApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) { } public async Task> GetProperties(int amount = 20, diff --git a/src/Forbury.Integrations/API/v1/Clients/ForburyTeamApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/ForburyTeamApiClient.cs index 66558b3..1ee8306 100644 --- a/src/Forbury.Integrations/API/v1/Clients/ForburyTeamApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/ForburyTeamApiClient.cs @@ -2,6 +2,7 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.v1.Dto; using Forbury.Integrations.API.v1.Dto.Enums; using Forbury.Integrations.API.v1.Dto.Model; @@ -9,13 +10,15 @@ using Forbury.Integrations.API.v1.Dto.Team; using Forbury.Integrations.API.v1.Interfaces; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Options; namespace Forbury.Integrations.API.v1.Clients { public class ForburyTeamApiClient : ForburyApiClient, IForburyTeamApiClient { - public ForburyTeamApiClient(HttpClient httpClient) : - base(httpClient) + public ForburyTeamApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) { } public async Task> GetTeams(int amount = 20, diff --git a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelApiClient.cs index 9b21195..661129b 100644 --- a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelApiClient.cs @@ -3,19 +3,22 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.v1.Dto; using Forbury.Integrations.API.v1.Dto.Enums; using Forbury.Integrations.API.v1.Dto.File; using Forbury.Integrations.API.v1.Dto.Model; using Forbury.Integrations.API.v1.Interfaces.Model; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Options; namespace Forbury.Integrations.API.v1.Clients.Model { public class ForburyModelApiClient : ForburyApiClient, IForburyModelApiClient { - public ForburyModelApiClient(HttpClient httpClient) : - base(httpClient) + public ForburyModelApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) { } public async Task> GetModels(ProductType? productType = null, diff --git a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelCommercialApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelCommercialApiClient.cs index f5e5cd0..8700f90 100644 --- a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelCommercialApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelCommercialApiClient.cs @@ -1,15 +1,18 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.v1.Dto.Model.Commercial; using Forbury.Integrations.API.v1.Interfaces.Model; +using Microsoft.Extensions.Options; namespace Forbury.Integrations.API.v1.Clients.Model { public class ForburyModelCommercialApiClient : ForburyModelApiClient, IForburyModelCommercialApiClient { - public ForburyModelCommercialApiClient(HttpClient httpClient) : - base(httpClient) + public ForburyModelCommercialApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) { } public async Task GetModelById(int modelId, diff --git a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelDatumApiClient.cs b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelDatumApiClient.cs index c72e64c..d4ba3c9 100644 --- a/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelDatumApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Clients/Model/ForburyModelDatumApiClient.cs @@ -1,18 +1,21 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; +using Forbury.Integrations.API.Models.Configuration; using Forbury.Integrations.API.v1.Dto.Model; using Forbury.Integrations.API.v1.Dto.Model.Datum; using Forbury.Integrations.API.v1.Dto.Model.Datum.Input; using Forbury.Integrations.API.v1.Interfaces.Model; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Options; namespace Forbury.Integrations.API.v1.Clients.Model { public class ForburyModelDatumApiClient : ForburyModelApiClient, IForburyModelDatumApiClient { - public ForburyModelDatumApiClient(HttpClient httpClient) : - base(httpClient) + public ForburyModelDatumApiClient(HttpClient httpClient, + IOptions configuration) : + base(httpClient, configuration) { } public async Task GetModelById(int modelId, diff --git a/src/Forbury.Integrations/API/v1/Interfaces/IForburyApiClient.cs b/src/Forbury.Integrations/API/v1/Interfaces/IForburyApiClient.cs index 27f24e5..db392b3 100644 --- a/src/Forbury.Integrations/API/v1/Interfaces/IForburyApiClient.cs +++ b/src/Forbury.Integrations/API/v1/Interfaces/IForburyApiClient.cs @@ -1,7 +1,10 @@ -namespace Forbury.Integrations.API.v1.Interfaces +using Forbury.Integrations.API.Models.Configuration; + +namespace Forbury.Integrations.API.v1.Interfaces { public interface IForburyApiClient { void SetClient(string name); + void SetClient(string name, AuthenticationClientConfiguration clientConfiguration); } } From d40ab8a028360d0c978ec880cd0bdfca83dc0e02 Mon Sep 17 00:00:00 2001 From: Mitchell Currey Date: Thu, 11 Jan 2024 12:00:21 +0000 Subject: [PATCH 3/4] Add support for .NET 7 and .NET 8 --- .github/workflows/dotnet.yml | 14 +++++++++++--- .../Forbury.Integrations.csproj | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 8c83428..211ff23 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -19,17 +19,25 @@ jobs: steps: - uses: actions/checkout@v3 - name: Setup .NET 3.1 - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v3 with: dotnet-version: 3.1.x - name: Setup .NET 5.0 - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v3 with: dotnet-version: 5.0.x - name: Setup .NET 6.0 - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v3 with: dotnet-version: 6.0.x + - name: Setup .NET 7.0 + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 7.0.x + - name: Setup .NET 8.0 + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x - name: Restore dependencies run: dotnet restore - name: Build diff --git a/src/Forbury.Integrations/Forbury.Integrations.csproj b/src/Forbury.Integrations/Forbury.Integrations.csproj index 887a8cd..87759cd 100644 --- a/src/Forbury.Integrations/Forbury.Integrations.csproj +++ b/src/Forbury.Integrations/Forbury.Integrations.csproj @@ -14,7 +14,7 @@ Forbury.Integrations Forbury.Integrations - net48;netcoreapp3.1;net5.0;net6.0 + net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0 true From 424d043f30c33800a59e45d37d3f94cc1953e41a Mon Sep 17 00:00:00 2001 From: Mitchell Currey Date: Thu, 11 Jan 2024 12:23:23 +0000 Subject: [PATCH 4/4] Update logo --- assets/logo/logo_text.png | Bin 22305 -> 34389 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/logo/logo_text.png b/assets/logo/logo_text.png index 77351961730ede556364aad2f29847ffa01e8f10..f533435c3ff2fb71055017000e328aabe3f2381d 100644 GIT binary patch literal 34389 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 literal 22305 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 Z&@cH1=ozKvJY;f#{TXNX-7sF>{{T!fF3kV{