diff --git a/fusionauth-netcore-client/src/io/fusionauth/DefaultRESTClient.cs b/fusionauth-netcore-client/src/io/fusionauth/DefaultRESTClient.cs index 21e76ff3..9ef1b107 100644 --- a/fusionauth-netcore-client/src/io/fusionauth/DefaultRESTClient.cs +++ b/fusionauth-netcore-client/src/io/fusionauth/DefaultRESTClient.cs @@ -19,6 +19,7 @@ using System.Linq; using System.Net; using System.Net.Http; +using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using com.inversoft.error; @@ -28,7 +29,7 @@ using Newtonsoft.Json.Serialization; namespace io.fusionauth { - class DefaultRESTClient : IRESTClient { + public class DefaultRESTClient : IRESTClient { public HttpClient httpClient; public HttpContent content; @@ -57,6 +58,10 @@ public DefaultRESTClient(string host) { httpClient = new HttpClient {BaseAddress = new Uri(host)}; } + public DefaultRESTClient(HttpClient incomingHttpClient) { + httpClient = incomingHttpClient; + } + /** * Sets the authorization header using a key * @@ -164,6 +169,7 @@ private string getFullUri() { } private Task baseRequest() { + httpClient.DefaultRequestHeaders.Clear(); foreach (var (key, value) in headers.Select(x => (x.Key, x.Value))) { // .Add performs additional validation on the 'value' that may fail if an API key contains a '=' character. // - Bypass this additional validation for the Authorization header. If we find other edge cases, perhaps @@ -228,4 +234,4 @@ public override Task> goAsync() { }); } } -} \ No newline at end of file +} diff --git a/fusionauth-netcore-client/src/io/fusionauth/FusionAuthClient.cs b/fusionauth-netcore-client/src/io/fusionauth/FusionAuthClient.cs index 561f01c1..e2d4e106 100644 --- a/fusionauth-netcore-client/src/io/fusionauth/FusionAuthClient.cs +++ b/fusionauth-netcore-client/src/io/fusionauth/FusionAuthClient.cs @@ -3300,4 +3300,24 @@ public IRESTClient build(string host) { return new DefaultRESTClient(host); } } + + public class HttpClientBuilder : IRESTClientBuilder + { + public HttpClient HTTP_CLIENT; + + public HttpClientBuilder(HttpClient httpClient) + { + HTTP_CLIENT = httpClient; + } + + public IRESTClient build(string host) + { + if (HTTP_CLIENT.BaseAddress == null) + { + HTTP_CLIENT.BaseAddress = new Uri(host); + } + return new DefaultRESTClient(HTTP_CLIENT); + } + + } } diff --git a/fusionauth-netcore-client/src/io/fusionauth/FusionAuthSyncClient.cs b/fusionauth-netcore-client/src/io/fusionauth/FusionAuthSyncClient.cs index 9b4a16e8..9437c50d 100644 --- a/fusionauth-netcore-client/src/io/fusionauth/FusionAuthSyncClient.cs +++ b/fusionauth-netcore-client/src/io/fusionauth/FusionAuthSyncClient.cs @@ -33,8 +33,8 @@ namespace io.fusionauth { public class FusionAuthSyncClient : IFusionAuthSyncClient { public readonly FusionAuthClient client; - public FusionAuthSyncClient(string apiKey, string host, string tenantId = null) { - client = new FusionAuthClient(apiKey, host, tenantId); + public FusionAuthSyncClient(string apiKey, string host, string tenantId = null, IRESTClientBuilder clientBuilder = null) { + client = new FusionAuthClient(apiKey, host, tenantId, clientBuilder); } /**