From dd60555ed39ed53f58b59c9e0b2d0be10090a9af Mon Sep 17 00:00:00 2001 From: TekH Date: Fri, 15 Aug 2025 10:20:33 +0200 Subject: [PATCH] feat(ClientOptions): add QueryStrings-property. - add logic to handle global query strings on EConnectClient --- src/Leanetec.EConnect.Client/ClientOptions.cs | 2 ++ src/Leanetec.EConnect.Infrastructure/EConnectClient.cs | 10 ++++++++++ .../ObjectExtensions.cs | 1 + 3 files changed, 13 insertions(+) diff --git a/src/Leanetec.EConnect.Client/ClientOptions.cs b/src/Leanetec.EConnect.Client/ClientOptions.cs index 36f1b1a..3dec3ac 100644 --- a/src/Leanetec.EConnect.Client/ClientOptions.cs +++ b/src/Leanetec.EConnect.Client/ClientOptions.cs @@ -7,4 +7,6 @@ public class ClientOptions public string? ApiKey { get; set; } public TimeSpan? Timeout { get; set; } + + public Dictionary? QueryStrings { get; set; } } \ No newline at end of file diff --git a/src/Leanetec.EConnect.Infrastructure/EConnectClient.cs b/src/Leanetec.EConnect.Infrastructure/EConnectClient.cs index 3fcbf6a..b04f16c 100644 --- a/src/Leanetec.EConnect.Infrastructure/EConnectClient.cs +++ b/src/Leanetec.EConnect.Infrastructure/EConnectClient.cs @@ -23,6 +23,11 @@ public class EConnectClient : IEConnectClient where TError : cl public async Task> GetAsync(string? route = null, object? queryParams = null, CancellationToken cancel = default) where TData : class { + // add global query strings + if (_options.QueryStrings is not null) + route = route.AddQueryString(_options.QueryStrings); + + // add query strings if (queryParams is not null) route = route.AddQueryString(queryParams.ToPropertyDictionary()); @@ -43,6 +48,11 @@ public class EConnectClient : IEConnectClient where TError : cl public async Task, TError>> GetListAsAsyncEnumerable(string? route = null, object? queryParams = null, CancellationToken cancel = default) where TData : class { + // add global query strings + if (_options.QueryStrings is not null) + route = route.AddQueryString(_options.QueryStrings); + + // add query strings if (queryParams is not null) route = route.AddQueryString(queryParams.ToPropertyDictionary()); diff --git a/src/Leanetec.EConnect.Infrastructure/ObjectExtensions.cs b/src/Leanetec.EConnect.Infrastructure/ObjectExtensions.cs index e52914b..b12e27d 100644 --- a/src/Leanetec.EConnect.Infrastructure/ObjectExtensions.cs +++ b/src/Leanetec.EConnect.Infrastructure/ObjectExtensions.cs @@ -15,6 +15,7 @@ public static class ObjectExtensions prop => prop.GetValue(obj).ToSafeString() ); } + public static Dictionary ToPropertyDictionary(this Dictionary obj) { return obj