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