diff --git a/Activout.RestClient.Json.Test/SimpleValueObjectTest.cs b/Activout.RestClient.Json.Test/SimpleValueObjectTest.cs index 0834916..7d437dd 100644 --- a/Activout.RestClient.Json.Test/SimpleValueObjectTest.cs +++ b/Activout.RestClient.Json.Test/SimpleValueObjectTest.cs @@ -26,7 +26,7 @@ public class SimpleValueObjectTest { private const string BaseUri = "https://example.com/api/"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); [Fact] diff --git a/Activout.RestClient.Json.Test/SystemTextJsonDeserializerTest.cs b/Activout.RestClient.Json.Test/SystemTextJsonDeserializerTest.cs index 5ae293d..f5089d3 100644 --- a/Activout.RestClient.Json.Test/SystemTextJsonDeserializerTest.cs +++ b/Activout.RestClient.Json.Test/SystemTextJsonDeserializerTest.cs @@ -21,7 +21,7 @@ public class SystemTextJsonDeserializerTest { private const string BaseUri = "https://example.com/api/"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); [Fact] diff --git a/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DefaultDomainExceptionErrorObjectTests.cs b/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DefaultDomainExceptionErrorObjectTests.cs index d7c7a2f..17a3263 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DefaultDomainExceptionErrorObjectTests.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DefaultDomainExceptionErrorObjectTests.cs @@ -41,7 +41,7 @@ public DefaultDomainExceptionErrorObjectTests() { _mockHttp = new MockHttpMessageHandler(); - _defaultMapperApiClient = Services.CreateRestClientFactory() + _defaultMapperApiClient = new RestClientFactory() .CreateBuilder() .WithNewtonsoftJson() .With(_mockHttp.ToHttpClient()) diff --git a/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorEnumTests.cs b/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorEnumTests.cs index aa86902..02d59ed 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorEnumTests.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorEnumTests.cs @@ -44,7 +44,7 @@ public DomainExceptionErrorEnumTests() { _mockHttp = new MockHttpMessageHandler(); - _myApiClient = Services.CreateRestClientFactory() + _myApiClient = new RestClientFactory() .CreateBuilder() .With(_mockHttp.ToHttpClient()) .WithNewtonsoftJson() diff --git a/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorObjectTests.cs b/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorObjectTests.cs index fc77f6b..cdf6c66 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorObjectTests.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/DomainExceptions/DomainExceptionErrorObjectTests.cs @@ -76,7 +76,7 @@ public DomainExceptionErrorObjectTests() { _mockHttp = new MockHttpMessageHandler(); - _myApiClient = Services.CreateRestClientFactory() + _myApiClient = new RestClientFactory() .CreateBuilder() .WithNewtonsoftJson() .With(_mockHttp.ToHttpClient()) diff --git a/Activout.RestClient.Newtonsoft.Json.Test/NewtonsoftJsonDeserializerTest.cs b/Activout.RestClient.Newtonsoft.Json.Test/NewtonsoftJsonDeserializerTest.cs index f468a2d..03546b7 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/NewtonsoftJsonDeserializerTest.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/NewtonsoftJsonDeserializerTest.cs @@ -26,7 +26,7 @@ public class NewtonsoftJsonDeserializerTest { public NewtonsoftJsonDeserializerTest() { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); } diff --git a/Activout.RestClient.Newtonsoft.Json.Test/RestClientTests.cs b/Activout.RestClient.Newtonsoft.Json.Test/RestClientTests.cs index 28a7dcf..ce963eb 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/RestClientTests.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/RestClientTests.cs @@ -18,7 +18,7 @@ public class RestClientTests { public RestClientTests(ITestOutputHelper outputHelper) { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); } diff --git a/Activout.RestClient.Newtonsoft.Json.Test/SerializationOrderTest.cs b/Activout.RestClient.Newtonsoft.Json.Test/SerializationOrderTest.cs index d999618..d201def 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/SerializationOrderTest.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/SerializationOrderTest.cs @@ -20,7 +20,7 @@ public class SerializationOrderTest public SerializationOrderTest() { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); } diff --git a/Activout.RestClient.Newtonsoft.Json.Test/SimpleValueObjectTest.cs b/Activout.RestClient.Newtonsoft.Json.Test/SimpleValueObjectTest.cs index afe266a..be3583c 100644 --- a/Activout.RestClient.Newtonsoft.Json.Test/SimpleValueObjectTest.cs +++ b/Activout.RestClient.Newtonsoft.Json.Test/SimpleValueObjectTest.cs @@ -38,7 +38,7 @@ public class SimpleValueObjectTest { private const string BaseUri = "https://example.com/api/"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); [Fact] diff --git a/Activout.RestClient.Test.Json/RestClientTests.cs b/Activout.RestClient.Test.Json/RestClientTests.cs index 9eb15ea..af165fe 100644 --- a/Activout.RestClient.Test.Json/RestClientTests.cs +++ b/Activout.RestClient.Test.Json/RestClientTests.cs @@ -32,7 +32,7 @@ public class RestClientTests(ITestOutputHelper outputHelper) private const string MovieId = "*MOVIE_ID*"; private const string ReviewId = "*REVIEW_ID*"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient.Test.Json/SerializationOrderTest.cs b/Activout.RestClient.Test.Json/SerializationOrderTest.cs index 402f7f5..9a7a7e2 100644 --- a/Activout.RestClient.Test.Json/SerializationOrderTest.cs +++ b/Activout.RestClient.Test.Json/SerializationOrderTest.cs @@ -16,7 +16,7 @@ public class SerializationOrderTest private const int OrderFirst = -1000; private const int OrderLast = 1000; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); [Theory] diff --git a/Activout.RestClient.Test.Json/SimpleValueObjectTest.cs b/Activout.RestClient.Test.Json/SimpleValueObjectTest.cs index d910054..09274b6 100644 --- a/Activout.RestClient.Test.Json/SimpleValueObjectTest.cs +++ b/Activout.RestClient.Test.Json/SimpleValueObjectTest.cs @@ -28,7 +28,7 @@ public class SimpleValueObjectTest { private const string BaseUri = "https://example.com/api/"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); [Theory] diff --git a/Activout.RestClient.Test/BodyArgumentFormPostTest.cs b/Activout.RestClient.Test/BodyArgumentFormPostTest.cs index e450fe1..0f359c2 100644 --- a/Activout.RestClient.Test/BodyArgumentFormPostTest.cs +++ b/Activout.RestClient.Test/BodyArgumentFormPostTest.cs @@ -39,7 +39,7 @@ public class BodyArgumentFormPostTest public BodyArgumentFormPostTest() { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); } diff --git a/Activout.RestClient.Test/CancellationTokenBodyTest.cs b/Activout.RestClient.Test/CancellationTokenBodyTest.cs index 5ddf6a2..dee698c 100644 --- a/Activout.RestClient.Test/CancellationTokenBodyTest.cs +++ b/Activout.RestClient.Test/CancellationTokenBodyTest.cs @@ -37,7 +37,7 @@ public class CancellationTokenBodyTest public CancellationTokenBodyTest() { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); } diff --git a/Activout.RestClient.Test/DictionaryParameterTests.cs b/Activout.RestClient.Test/DictionaryParameterTests.cs index 9f0e504..44c0580 100644 --- a/Activout.RestClient.Test/DictionaryParameterTests.cs +++ b/Activout.RestClient.Test/DictionaryParameterTests.cs @@ -14,7 +14,7 @@ public class DictionaryParameterTests(ITestOutputHelper outputHelper) { private const string BaseUri = "https://example.com/api"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new MockHttpMessageHandler(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient.Test/ErrorResponseTextPlainTest.cs b/Activout.RestClient.Test/ErrorResponseTextPlainTest.cs index 3b4b95f..a2380b2 100644 --- a/Activout.RestClient.Test/ErrorResponseTextPlainTest.cs +++ b/Activout.RestClient.Test/ErrorResponseTextPlainTest.cs @@ -12,7 +12,7 @@ public class ErrorResponseTextPlainTest(ITestOutputHelper outputHelper) { private const string BaseUri = "https://example.com/api"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient.Test/HttpResponseMessageTest.cs b/Activout.RestClient.Test/HttpResponseMessageTest.cs index 7c596af..5415ea3 100644 --- a/Activout.RestClient.Test/HttpResponseMessageTest.cs +++ b/Activout.RestClient.Test/HttpResponseMessageTest.cs @@ -16,7 +16,7 @@ public class HttpResponseMessageTest public HttpResponseMessageTest() { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); } diff --git a/Activout.RestClient.Test/HttpStatusCodeTest.cs b/Activout.RestClient.Test/HttpStatusCodeTest.cs index 9a7dcc1..a56c3e2 100644 --- a/Activout.RestClient.Test/HttpStatusCodeTest.cs +++ b/Activout.RestClient.Test/HttpStatusCodeTest.cs @@ -16,7 +16,7 @@ public class HttpStatusCodeTest public HttpStatusCodeTest() { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); } diff --git a/Activout.RestClient.Test/MultipartFormDataContentTest.cs b/Activout.RestClient.Test/MultipartFormDataContentTest.cs index a443abc..dd40394 100644 --- a/Activout.RestClient.Test/MultipartFormDataContentTest.cs +++ b/Activout.RestClient.Test/MultipartFormDataContentTest.cs @@ -20,7 +20,7 @@ public class MultipartFormDataContentTest public MultipartFormDataContentTest(ITestOutputHelper outputHelper) { - _restClientFactory = Services.CreateRestClientFactory(); + _restClientFactory = new RestClientFactory(); _mockHttp = new MockHttpMessageHandler(); _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); } diff --git a/Activout.RestClient.Test/NonJsonRestClientTests.cs b/Activout.RestClient.Test/NonJsonRestClientTests.cs index 7b6bbe6..0d07e28 100644 --- a/Activout.RestClient.Test/NonJsonRestClientTests.cs +++ b/Activout.RestClient.Test/NonJsonRestClientTests.cs @@ -20,7 +20,7 @@ public class NonJsonRestClientTests(ITestOutputHelper outputHelper) private const string MovieId = "*MOVIE_ID*"; private const string ReviewId = "*REVIEW_ID*"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new MockHttpMessageHandler(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient.Test/NullParameterTests.cs b/Activout.RestClient.Test/NullParameterTests.cs index a5d4c1f..267bcdf 100644 --- a/Activout.RestClient.Test/NullParameterTests.cs +++ b/Activout.RestClient.Test/NullParameterTests.cs @@ -12,7 +12,7 @@ public class NullParameterTests(ITestOutputHelper outputHelper) { private const string BaseUri = "https://example.com/api"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new MockHttpMessageHandler(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient.Xml.Test/ErrorResponseXmlTest.cs b/Activout.RestClient.Xml.Test/ErrorResponseXmlTest.cs index 68f4e61..8b84a26 100644 --- a/Activout.RestClient.Xml.Test/ErrorResponseXmlTest.cs +++ b/Activout.RestClient.Xml.Test/ErrorResponseXmlTest.cs @@ -10,7 +10,7 @@ public class ErrorResponseXmlTest(ITestOutputHelper outputHelper) { private const string BaseUri = "https://example.com/api"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient.Xml.Test/XmlTests.cs b/Activout.RestClient.Xml.Test/XmlTests.cs index c318ca1..9b3a673 100644 --- a/Activout.RestClient.Xml.Test/XmlTests.cs +++ b/Activout.RestClient.Xml.Test/XmlTests.cs @@ -9,7 +9,7 @@ public class XmlTests(ITestOutputHelper outputHelper) { private const string BaseUri = "https://example.com/xml"; - private readonly IRestClientFactory _restClientFactory = Services.CreateRestClientFactory(); + private readonly IRestClientFactory _restClientFactory = new RestClientFactory(); private readonly MockHttpMessageHandler _mockHttp = new MockHttpMessageHandler(); private readonly ILoggerFactory _loggerFactory = LoggerFactoryHelpers.CreateLoggerFactory(outputHelper); diff --git a/Activout.RestClient/Helpers/ITaskConverterFactory.cs b/Activout.RestClient/Helpers/ITaskConverterFactory.cs index aca664e..d81906e 100644 --- a/Activout.RestClient/Helpers/ITaskConverterFactory.cs +++ b/Activout.RestClient/Helpers/ITaskConverterFactory.cs @@ -1,10 +1,8 @@ -#nullable disable using System; -namespace Activout.RestClient.Helpers +namespace Activout.RestClient.Helpers; + +public interface ITaskConverterFactory { - public interface ITaskConverterFactory - { - ITaskConverter CreateTaskConverter(Type actualReturnType); - } + ITaskConverter? CreateTaskConverter(Type actualReturnType); } \ No newline at end of file diff --git a/Activout.RestClient/Helpers/Implementation/DuckTyping.cs b/Activout.RestClient/Helpers/Implementation/DuckTyping.cs index 393123f..bbdb463 100644 --- a/Activout.RestClient/Helpers/Implementation/DuckTyping.cs +++ b/Activout.RestClient/Helpers/Implementation/DuckTyping.cs @@ -1,13 +1,13 @@ -#nullable disable using ImpromptuInterface; -namespace Activout.RestClient.Helpers.Implementation +namespace Activout.RestClient.Helpers.Implementation; + +public class DuckTyping : IDuckTyping { - public class DuckTyping : IDuckTyping + public static IDuckTyping Instance { get; } = new DuckTyping(); + + public TInterface DuckType(object originalDynamic) where TInterface : class { - public TInterface DuckType(object originalDynamic) where TInterface : class - { - return originalDynamic.ActLike(); - } + return originalDynamic.ActLike(); } } \ No newline at end of file diff --git a/Activout.RestClient/Helpers/Implementation/TaskConverter3Factory.cs b/Activout.RestClient/Helpers/Implementation/TaskConverter3Factory.cs index b5ba196..c984da9 100644 --- a/Activout.RestClient/Helpers/Implementation/TaskConverter3Factory.cs +++ b/Activout.RestClient/Helpers/Implementation/TaskConverter3Factory.cs @@ -1,13 +1,15 @@ -#nullable disable using System; namespace Activout.RestClient.Helpers.Implementation; public class TaskConverter3Factory : ITaskConverterFactory { - public ITaskConverter CreateTaskConverter(Type actualReturnType) + public static ITaskConverterFactory Instance { get; } = new TaskConverter3Factory(); + + public ITaskConverter? CreateTaskConverter(Type actualReturnType) { - return actualReturnType == typeof(void) ? null : - (ITaskConverter) Activator.CreateInstance(typeof(TaskConverter3<>).MakeGenericType(actualReturnType)); + return actualReturnType == typeof(void) + ? null + : (ITaskConverter?)Activator.CreateInstance(typeof(TaskConverter3<>).MakeGenericType(actualReturnType)); } } \ No newline at end of file diff --git a/Activout.RestClient/Implementation/RestClientBuilder.cs b/Activout.RestClient/Implementation/RestClientBuilder.cs index be2763d..ca3a3d3 100644 --- a/Activout.RestClient/Implementation/RestClientBuilder.cs +++ b/Activout.RestClient/Implementation/RestClientBuilder.cs @@ -5,7 +5,9 @@ using System.Net.Http; using Activout.RestClient.DomainExceptions; using Activout.RestClient.Helpers; +using Activout.RestClient.Helpers.Implementation; using Activout.RestClient.ParamConverter; +using Activout.RestClient.ParamConverter.Implementation; using Activout.RestClient.Serialization; using Activout.RestClient.Serialization.Implementation; using Microsoft.Extensions.Logging; @@ -14,27 +16,15 @@ namespace Activout.RestClient.Implementation { internal class RestClientBuilder : IRestClientBuilder { - private readonly IDuckTyping _duckTyping; - private readonly RestClientContext _context; - private readonly List _serializers = SerializationManager.DefaultSerializers.ToList(); - private readonly List _deserializers = SerializationManager.DefaultDeserializers.ToList(); + private IDuckTyping _duckTyping = DuckTyping.Instance; - public RestClientBuilder( - IDuckTyping duckTyping, - IParamConverterManager paramConverterManager, - ITaskConverterFactory taskConverterFactory) + private readonly RestClientContext _context = new RestClientContext() { - _duckTyping = duckTyping ?? throw new ArgumentNullException(nameof(duckTyping)); - - _context = new RestClientContext - { - TaskConverterFactory = taskConverterFactory ?? - throw new ArgumentNullException(nameof(taskConverterFactory)), - ParamConverterManager = paramConverterManager ?? - throw new ArgumentNullException(nameof(paramConverterManager)) - }; - } - + ParamConverterManager = ParamConverterManager.Instance, + TaskConverterFactory = TaskConverter3Factory.Instance + }; + private readonly List _serializers = SerializationManager.DefaultSerializers.ToList(); + private readonly List _deserializers = SerializationManager.DefaultDeserializers.ToList(); public IRestClientBuilder BaseUri(Uri apiUri) { @@ -54,6 +44,12 @@ public IRestClientBuilder Header(string name, object value) return this; } + public IRestClientBuilder With(IDuckTyping duckTyping) + { + _duckTyping = duckTyping; + return this; + } + public IRestClientBuilder With(ILogger logger) { _context.Logger = logger; diff --git a/Activout.RestClient/Implementation/RestClientFactory.cs b/Activout.RestClient/Implementation/RestClientFactory.cs deleted file mode 100644 index b73456a..0000000 --- a/Activout.RestClient/Implementation/RestClientFactory.cs +++ /dev/null @@ -1,28 +0,0 @@ -#nullable disable -using Activout.RestClient.Helpers; -using Activout.RestClient.ParamConverter; - -namespace Activout.RestClient.Implementation -{ - public class RestClientFactory : IRestClientFactory - { - private readonly IDuckTyping _duckTyping; - private readonly IParamConverterManager _paramConverterManager; - private readonly ITaskConverterFactory _taskConverterFactory; - - public RestClientFactory( - IDuckTyping duckTyping, - IParamConverterManager paramConverterManager, - ITaskConverterFactory taskConverterFactory) - { - _duckTyping = duckTyping; - _paramConverterManager = paramConverterManager; - _taskConverterFactory = taskConverterFactory; - } - - public IRestClientBuilder CreateBuilder() - { - return new RestClientBuilder(_duckTyping, _paramConverterManager, _taskConverterFactory); - } - } -} \ No newline at end of file diff --git a/Activout.RestClient/ParamConverter/IParamConverterManager.cs b/Activout.RestClient/ParamConverter/IParamConverterManager.cs index 5ccd934..cbf9ff6 100644 --- a/Activout.RestClient/ParamConverter/IParamConverterManager.cs +++ b/Activout.RestClient/ParamConverter/IParamConverterManager.cs @@ -1,11 +1,9 @@ -#nullable disable using System; using System.Reflection; -namespace Activout.RestClient.ParamConverter +namespace Activout.RestClient.ParamConverter; + +public interface IParamConverterManager { - public interface IParamConverterManager - { - IParamConverter GetConverter(Type type, ParameterInfo parameterInfo); - } + IParamConverter? GetConverter(Type type, ParameterInfo parameterInfo); } \ No newline at end of file diff --git a/Activout.RestClient/ParamConverter/Implementation/ParamConverterManager.cs b/Activout.RestClient/ParamConverter/Implementation/ParamConverterManager.cs index dc09128..f52c644 100644 --- a/Activout.RestClient/ParamConverter/Implementation/ParamConverterManager.cs +++ b/Activout.RestClient/ParamConverter/Implementation/ParamConverterManager.cs @@ -1,31 +1,31 @@ -#nullable disable using System; using System.Collections.Generic; -using System.Globalization; using System.Reflection; -namespace Activout.RestClient.ParamConverter.Implementation +namespace Activout.RestClient.ParamConverter.Implementation; + +public class ParamConverterManager : IParamConverterManager { - public class ParamConverterManager : IParamConverterManager - { - public List ParamConverters { get; } + public static IParamConverterManager Instance { get; } = new ParamConverterManager(); - public ParamConverterManager() - { - ParamConverters = new List { new DateTimeIso8601ParamConverter(), new ToStringParamConverter() }; - } + public List ParamConverters { get; } + + public ParamConverterManager() + { + ParamConverters = new List + { new DateTimeIso8601ParamConverter(), new ToStringParamConverter() }; + } - public IParamConverter GetConverter(Type type, ParameterInfo parameterInfo) + public IParamConverter? GetConverter(Type type, ParameterInfo parameterInfo) + { + foreach (var paramConverter in ParamConverters) { - foreach (var paramConverter in ParamConverters) + if (paramConverter.CanConvert(type, parameterInfo)) { - if (paramConverter.CanConvert(type, parameterInfo)) - { - return paramConverter; - } + return paramConverter; } - - return null; } + + return null; } } \ No newline at end of file diff --git a/Activout.RestClient/RestClientFactory.cs b/Activout.RestClient/RestClientFactory.cs new file mode 100644 index 0000000..d0dd179 --- /dev/null +++ b/Activout.RestClient/RestClientFactory.cs @@ -0,0 +1,8 @@ +using Activout.RestClient.Implementation; + +namespace Activout.RestClient; + +public class RestClientFactory : IRestClientFactory +{ + public IRestClientBuilder CreateBuilder() => new RestClientBuilder(); +} \ No newline at end of file diff --git a/Activout.RestClient/Services.cs b/Activout.RestClient/Services.cs deleted file mode 100644 index 85a881b..0000000 --- a/Activout.RestClient/Services.cs +++ /dev/null @@ -1,38 +0,0 @@ -#nullable disable -using Activout.RestClient.Helpers; -using Activout.RestClient.Helpers.Implementation; -using Activout.RestClient.Implementation; -using Activout.RestClient.ParamConverter; -using Activout.RestClient.ParamConverter.Implementation; - -namespace Activout.RestClient -{ - public static class Services - { - public static IDuckTyping CreateDuckTyping() - { - return new DuckTyping(); - } - - public static ITaskConverterFactory CreateTaskConverterFactory() - { - return new TaskConverter3Factory(); - } - - public static IRestClientFactory CreateRestClientFactory( - IDuckTyping duckTyping = null, - ParamConverterManager paramConverterManager = null, - ITaskConverterFactory taskConverterFactory = null) - { - return new RestClientFactory( - duckTyping ?? CreateDuckTyping(), - paramConverterManager ?? CreateParamConverterManager(), - taskConverterFactory ?? CreateTaskConverterFactory()); - } - - public static IParamConverterManager CreateParamConverterManager() - { - return new ParamConverterManager(); - } - } -} \ No newline at end of file