using Castle.Core.Logging; namespace Pilz.Net.Api; public interface IApiClient { string ApiUrl { get; } string? AuthKey { get; set; } IApiMessageSerializer Serializer { get; } ILogger Log { get; set; } Task SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer); Task> SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage; public virtual Task SendRequest(string route) { return SendRequest(route, HttpMethod.Post, null, null, null); } public virtual Task SendRequest(string route, HttpMethod method) { return SendRequest(route, method, null, null, null); } public virtual Task SendRequest(string route, HttpMethod method, ApiParameterCollection? @params) { return SendRequest(route, method, null, @params, null); } public virtual Task SendRequest(string route, ApiMessage? message) { return SendRequest(route, HttpMethod.Post, message, null, null); } public virtual Task SendRequest(string route, HttpMethod method, ApiMessage? message) { return SendRequest(route, method, message, null, null); } public virtual Task SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params) { return SendRequest(route, method, message, @params, null); } public virtual Task> SendRequest(string route) where TResponse : ApiMessage { return SendRequest(route, HttpMethod.Post, null, null, null); } public virtual Task> SendRequest(string route, HttpMethod method) where TResponse : ApiMessage { return SendRequest(route, method, null, null, null); } public virtual Task> SendRequest(string route, HttpMethod method, ApiParameterCollection? @params) where TResponse : ApiMessage { return SendRequest(route, method, null, @params, null); } public virtual Task> SendRequest(string route, ApiMessage? message) where TResponse : ApiMessage { return SendRequest(route, HttpMethod.Post, message, null, null); } public virtual Task> SendRequest(string route, HttpMethod method, ApiMessage? message) where TResponse : ApiMessage { return SendRequest(route, method, message, null, null); } public virtual Task> SendRequest(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params) where TResponse : ApiMessage { return SendRequest(route, method, message, @params, null); } }