diff --git a/Pilz.Net/Api/ApiClient.cs b/Pilz.Net/Api/ApiClient.cs index a1e6e8c..6d88460 100644 --- a/Pilz.Net/Api/ApiClient.cs +++ b/Pilz.Net/Api/ApiClient.cs @@ -17,7 +17,7 @@ public class ApiClient(string apiUrl) : IApiClient public ILogger Log { get; set; } = NullLogger.Instance; - public virtual async Task SendRequest(string route, HttpMethod method, ApiMessage? message, IDictionary? @params, IApiMessageSerializer? serializer) + public virtual async Task SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer) { serializer ??= Serializer; @@ -28,7 +28,7 @@ public class ApiClient(string apiUrl) : IApiClient return new(res.StatusCode); } - public virtual async Task> SendRequest(string route, HttpMethod method, ApiMessage? message, IDictionary? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage + public virtual async Task> SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage { serializer ??= Serializer; @@ -43,7 +43,7 @@ public class ApiClient(string apiUrl) : IApiClient return new(res.StatusCode, result); } - protected virtual async Task Send(string route, HttpMethod method, ApiMessage? message, IDictionary? @params, IApiMessageSerializer serializer) + protected virtual async Task Send(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer serializer) { var url = ApiUrl + route + BuildParameters(@params); HttpContent content; @@ -71,7 +71,7 @@ public class ApiClient(string apiUrl) : IApiClient return await httpClient.SendAsync(httpmsg); } - protected virtual string BuildParameters(IDictionary? @params) + protected virtual string BuildParameters(ApiParameterCollection? @params) { if (@params == null || @params.Count == 0) return string.Empty; diff --git a/Pilz.Net/Api/ApiParameterCollection.cs b/Pilz.Net/Api/ApiParameterCollection.cs new file mode 100644 index 0000000..84ede96 --- /dev/null +++ b/Pilz.Net/Api/ApiParameterCollection.cs @@ -0,0 +1,15 @@ +using Pilz.Extensions.Collections; + +namespace Pilz.Net.Api; + +public class ApiParameterCollection : Dictionary +{ + public ApiParameterCollection() + { + } + + public ApiParameterCollection(IDictionary source) + { + source.ForEach(kvp => Add(kvp.Key, kvp.Value)); + } +} diff --git a/Pilz.Net/Api/IApiClient.cs b/Pilz.Net/Api/IApiClient.cs index 47f208c..274d0a5 100644 --- a/Pilz.Net/Api/IApiClient.cs +++ b/Pilz.Net/Api/IApiClient.cs @@ -12,9 +12,9 @@ public interface IApiClient ILogger Log { get; set; } - Task SendRequest(string route, HttpMethod method, ApiMessage? message, IDictionary? @params, IApiMessageSerializer? serializer); + Task SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer); - Task> SendRequest(string route, HttpMethod method, ApiMessage? message, IDictionary? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage; + Task> SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage; public virtual Task SendRequest(string route) { @@ -26,7 +26,7 @@ public interface IApiClient return SendRequest(route, method, null, null, null); } - public virtual Task SendRequest(string route, HttpMethod method, IDictionary? @params) + public virtual Task SendRequest(string route, HttpMethod method, ApiParameterCollection? @params) { return SendRequest(route, method, null, @params, null); } @@ -41,7 +41,7 @@ public interface IApiClient return SendRequest(route, method, message, null, null); } - public virtual Task SendRequest(string route, HttpMethod method, ApiMessage? message, IDictionary? @params) + public virtual Task SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params) { return SendRequest(route, method, message, @params, null); } @@ -56,7 +56,7 @@ public interface IApiClient return SendRequest(route, method, null, null, null); } - public virtual Task> SendRequest(string route, HttpMethod method, IDictionary? @params) where TResponse : ApiMessage + public virtual Task> SendRequest(string route, HttpMethod method, ApiParameterCollection? @params) where TResponse : ApiMessage { return SendRequest(route, method, null, @params, null); } @@ -71,7 +71,7 @@ public interface IApiClient return SendRequest(route, method, message, null, null); } - public virtual Task> SendRequest(string route, HttpMethod method, ApiMessage? message, IDictionary? @params) where TResponse : ApiMessage + public virtual Task> SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params) where TResponse : ApiMessage { return SendRequest(route, method, message, @params, null); }