diff --git a/src/CompuMaster.Scopevisio.OpenApi/Client/ApiClient.cs b/src/CompuMaster.Scopevisio.OpenApi/Client/ApiClient.cs index eb8ab95..fd681e6 100644 --- a/src/CompuMaster.Scopevisio.OpenApi/Client/ApiClient.cs +++ b/src/CompuMaster.Scopevisio.OpenApi/Client/ApiClient.cs @@ -53,10 +53,8 @@ internal partial class ApiClient /// Initializes a new instance of the class /// with default configuration. /// - public ApiClient() - { - Configuration = CompuMaster.Scopevisio.OpenApi.Client.Configuration.Default; - RestClient = new RestClient("https://appload.scopevisio.com/rest"); + public ApiClient() : this("https://appload.scopevisio.com/rest") + { } /// @@ -67,8 +65,7 @@ public ApiClient() public ApiClient(Configuration config) { Configuration = config ?? CompuMaster.Scopevisio.OpenApi.Client.Configuration.Default; - - RestClient = new RestClient(Configuration.BasePath); + this.BasePath = Configuration.BasePath; } /// @@ -79,8 +76,7 @@ public ApiClient(Configuration config) public ApiClient(String basePath = "https://appload.scopevisio.com/rest") { if (String.IsNullOrEmpty(basePath)) - throw new ArgumentException("basePath cannot be empty"); - + throw new ArgumentException("basePath cannot be empty"); Configuration = Client.Configuration.Default; this.BasePath = basePath; } @@ -116,11 +112,10 @@ public RestClient RestClient { if (_restClient == null) { - var Options = new RestClientOptions(this.BasePath); - Options.Timeout =new TimeSpan(0,0,0,0, this.Configuration.Timeout); - Options.UserAgent = this.Configuration.UserAgent; - - RestClient = new RestClient(Options); + if (this.Configuration.HttpClient != null) + RestClient = new RestClient(this.Configuration.HttpClient, this.ConfiguredRestClientOptions()); + else + RestClient = new RestClient(this.ConfiguredRestClientOptions()); } return _restClient; } @@ -130,6 +125,14 @@ public RestClient RestClient } } + protected virtual RestClientOptions ConfiguredRestClientOptions() + { + var Options = new RestClientOptions(this.BasePath); + Options.Timeout = new TimeSpan(0, 0, 0, 0, this.Configuration.Timeout); + Options.UserAgent = this.Configuration.UserAgent; + return Options; + } + // Creates and sets up a RestRequest prior to a call. private RestRequest PrepareRequest( String path, RestSharp.Method method, List> queryParams, Object postBody, diff --git a/src/CompuMaster.Scopevisio.OpenApi/Client/Configuration.cs b/src/CompuMaster.Scopevisio.OpenApi/Client/Configuration.cs index 6c153de..87fbf2e 100644 --- a/src/CompuMaster.Scopevisio.OpenApi/Client/Configuration.cs +++ b/src/CompuMaster.Scopevisio.OpenApi/Client/Configuration.cs @@ -18,10 +18,18 @@ namespace CompuMaster.Scopevisio.OpenApi.Client { + public partial class Configuration + { + /// + /// The http client for creating the RestClient + /// + public System.Net.Http.HttpClient HttpClient { get; set; } + } + /// /// Represents a set of configuration settings /// - public class Configuration : IReadableConfiguration + public partial class Configuration : IReadableConfiguration { #region Constants diff --git a/src/CompuMaster.Scopevisio.OpenApi/Client/IReadableConfiguration.cs b/src/CompuMaster.Scopevisio.OpenApi/Client/IReadableConfiguration.cs index fdb9017..3039406 100644 --- a/src/CompuMaster.Scopevisio.OpenApi/Client/IReadableConfiguration.cs +++ b/src/CompuMaster.Scopevisio.OpenApi/Client/IReadableConfiguration.cs @@ -13,10 +13,18 @@ namespace CompuMaster.Scopevisio.OpenApi.Client { + internal partial interface IReadableConfiguration + { + /// + /// The http client for creating the RestClient + /// + System.Net.Http.HttpClient HttpClient { get; } + } + /// /// Represents a readable-only configuration contract. /// - internal interface IReadableConfiguration + internal partial interface IReadableConfiguration { /// /// Gets the access token. diff --git a/src/CompuMaster.Scopevisio.OpenApi/CompuMaster.Scopevisio.OpenApi.csproj b/src/CompuMaster.Scopevisio.OpenApi/CompuMaster.Scopevisio.OpenApi.csproj index a24594b..c28a65b 100644 --- a/src/CompuMaster.Scopevisio.OpenApi/CompuMaster.Scopevisio.OpenApi.csproj +++ b/src/CompuMaster.Scopevisio.OpenApi/CompuMaster.Scopevisio.OpenApi.csproj @@ -4,10 +4,10 @@ CompuMaster.Scopevisio.OpenApi CompuMaster.Scopevisio.OpenApi netstandard2.0;net6.0;net48 - 2024.11.05.100 + 2026.01.02.0 Jochen Wezel CompuMaster GmbH - 2019-2024 CompuMaster GmbH + 2019-2026 CompuMaster GmbH MIT Client access library for the OpenScope API https://www.openscope.de/ (REST web API interface provided by Scopevisio AG, https://www.scopevisio.com/), library generated from Swagger/OpenAPI doc at https://appload.scopevisio.com/rest/swagger.json https://github.com/CompuMasterGmbH/CompuMaster.Scopevisio.OpenApi