From 45b58aa5a2ba649add3cd622ed569edd1f0f1c55 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Mon, 9 Dec 2024 07:46:58 +0100 Subject: [PATCH] use wrapped dictionary as api params collection --- Pilz.Net/Api/ApiClient.cs | 8 ++++---- Pilz.Net/Api/ApiParameterCollection.cs | 15 +++++++++++++++ Pilz.Net/Api/IApiClient.cs | 12 ++++++------ 3 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 Pilz.Net/Api/ApiParameterCollection.cs 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); }