/// <summary> /// CONSTRUCTOR /// </summary> /// <param name="baseAddress">the <code>Uri</code> HTTP endpoint in the service.</param> /// <param name="authenticationHeaderProvider">the <see cref="IAuthorizationHeaderProvider"/> that will provide the /// authorization token for the HTTP communication.</param> /// <param name="httpTransportSettings"> Specifies HTTP Transport Settings for the request</param> public ContractApiHttp( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, HttpTransportSettings httpTransportSettings) { _baseAddress = baseAddress; _authenticationHeaderProvider = authenticationHeaderProvider; _httpClientHandler = new HttpClientHandler { // Cannot specify a specific protocol here, as desired due to an error: // ProvisioningDeviceClient_ValidRegistrationId_AmqpWithProxy_SymmetricKey_RegisterOk_GroupEnrollment failing for me with System.PlatformNotSupportedException: Operation is not supported on this platform. // When revisiting TLS12 work for DPS, we should figure out why. Perhaps the service needs to support it. //SslProtocols = TlsVersions.Preferred, CheckCertificateRevocationList = TlsVersions.Instance.CertificateRevocationCheck }; IWebProxy webProxy = httpTransportSettings.Proxy; if (webProxy != DefaultWebProxySettings.Instance) { _httpClientHandler.UseProxy = webProxy != null; _httpClientHandler.Proxy = webProxy; } _httpClientObj = new HttpClient(_httpClientHandler) { BaseAddress = _baseAddress, Timeout = s_defaultOperationTimeout, }; _httpClientObj.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypeForDeviceManagementApis)); _httpClientObj.DefaultRequestHeaders.ExpectContinue = false; }
public HttpClientHelper( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, IDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > > defaultErrorMapping, TimeSpan timeout, Action <HttpClient> preRequestActionForAllRequests) { this.baseAddress = baseAddress; this.authenticationHeaderProvider = authenticationHeaderProvider; this.defaultErrorMapping = new ReadOnlyDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > >(defaultErrorMapping); this.defaultOperationTimeout = timeout; this.httpClientObj = new HttpClient(); this.httpClientObj.BaseAddress = this.baseAddress; this.httpClientObj.Timeout = timeout; this.httpClientObj.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); this.httpClientObj.DefaultRequestHeaders.ExpectContinue = false; this.httpClientObjWithPerRequestTimeout = new HttpClient(); this.httpClientObjWithPerRequestTimeout.BaseAddress = this.baseAddress; this.httpClientObjWithPerRequestTimeout.Timeout = Timeout.InfiniteTimeSpan; this.httpClientObjWithPerRequestTimeout.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); this.httpClientObjWithPerRequestTimeout.DefaultRequestHeaders.ExpectContinue = false; if (preRequestActionForAllRequests != null) { preRequestActionForAllRequests(this.httpClientObj); preRequestActionForAllRequests(this.httpClientObjWithPerRequestTimeout); } }
/// <summary> /// CONSTRUCTOR /// </summary> /// <param name="baseAddress">the <code>Uri</code> HTTP endpoint in the service.</param> /// <param name="authenticationHeaderProvider">the <see cref="IAuthorizationHeaderProvider"/> that will provide the /// authorization token for the HTTP communication.</param> /// <param name="httpTransportSettings"> Specifies HTTP Transport Settings for the request</param> public ContractApiHttp( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, HttpTransportSettings httpTransportSettings) { _baseAddress = baseAddress; _authenticationHeaderProvider = authenticationHeaderProvider; IWebProxy webProxy = httpTransportSettings.Proxy; if (webProxy != DefaultWebProxySettings.Instance) { HttpClientHandler httpClientHandler = new HttpClientHandler(); httpClientHandler.UseProxy = (webProxy != null); httpClientHandler.Proxy = webProxy; _httpClientObj = new HttpClient(httpClientHandler); } else { _httpClientObj = new HttpClient(); } _httpClientObj.BaseAddress = _baseAddress; _httpClientObj.Timeout = s_defaultOperationTimeout; _httpClientObj.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(MediaTypeForDeviceManagementApis)); _httpClientObj.DefaultRequestHeaders.ExpectContinue = false; }
public HttpClientHelper( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, IReadOnlyDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > > defaultErrorMapping, TimeSpan timeout, IWebProxy customHttpProxy, int connectionLeaseTimeoutMilliseconds) { _baseAddress = baseAddress; _authenticationHeaderProvider = authenticationHeaderProvider; _defaultErrorMapping = defaultErrorMapping; _defaultOperationTimeout = timeout; // We need two types of HttpClients, one with our default operation timeout, and one without. The one without will rely on // a cancellation token. _httpClientWithDefaultTimeout = CreateDefaultClient(customHttpProxy, _baseAddress, connectionLeaseTimeoutMilliseconds); _httpClientWithDefaultTimeout.Timeout = _defaultOperationTimeout; _httpClientWithDefaultTimeout.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); _httpClientWithDefaultTimeout.DefaultRequestHeaders.ExpectContinue = false; _httpClientWithNoTimeout = CreateDefaultClient(customHttpProxy, _baseAddress, connectionLeaseTimeoutMilliseconds); _httpClientWithNoTimeout.Timeout = Timeout.InfiniteTimeSpan; _httpClientWithNoTimeout.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); _httpClientWithNoTimeout.DefaultRequestHeaders.ExpectContinue = false; TlsVersions.Instance.SetLegacyAcceptableVersions(); }
/// <summary> /// CONSTRUCTOR /// </summary> /// <param name="baseAddress">the <code>Uri</code> HTTP endpoint in the service.</param> /// <param name="authenticationHeaderProvider">the <see cref="IAuthorizationHeaderProvider"/> that will provide the /// authorization token for the HTTP communication.</param> /// <param name="preRequestActionForAllRequests">the function with the HTTP pre-request actions.</param> public ContractApiHttp( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, Action <HttpClient> preRequestActionForAllRequests) { _baseAddress = baseAddress; _authenticationHeaderProvider = authenticationHeaderProvider; _httpClientObj = new HttpClient(); _httpClientObj.BaseAddress = _baseAddress; _httpClientObj.Timeout = s_defaultOperationTimeout; _httpClientObj.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); _httpClientObj.DefaultRequestHeaders.ExpectContinue = false; _httpClientObjWithPerRequestTimeout = new HttpClient(); _httpClientObjWithPerRequestTimeout.BaseAddress = _baseAddress; _httpClientObjWithPerRequestTimeout.Timeout = Timeout.InfiniteTimeSpan; _httpClientObjWithPerRequestTimeout.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); _httpClientObjWithPerRequestTimeout.DefaultRequestHeaders.ExpectContinue = false; if (preRequestActionForAllRequests != null) { preRequestActionForAllRequests(_httpClientObj); preRequestActionForAllRequests(_httpClientObjWithPerRequestTimeout); } }
public HttpClientHelper( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, TimeSpan timeout) { this.baseAddress = baseAddress; this.authenticationHeaderProvider = authenticationHeaderProvider; }
public void ConfigKeyShouldBeSet() { GithubActionsClient client = new GithubActionsClient(); IAuthorizationHeaderProvider authorizationHeaderProvider = client.AuthorizationHeaderProvider; string configKey = authorizationHeaderProvider.ConfigKey; configKey.ShouldNotBeNull(); configKey.ShouldNotBeBlank(); Pass(nameof(ConfigKeyShouldBeSet)); }
/// <summary> /// CONSTRUCTOR /// </summary> /// <param name="baseAddress">the <code>Uri</code> HTTP endpoint in the service.</param> /// <param name="authenticationHeaderProvider">the <see cref="IAuthorizationHeaderProvider"/> that will provide the /// authorization token for the HTTP communication.</param> /// <param name="preRequestActionForAllRequests">the function with the HTTP pre-request actions.</param> public ContractApiHttp( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider) { _baseAddress = baseAddress; _authenticationHeaderProvider = authenticationHeaderProvider; _httpClientObj = new HttpClient(); _httpClientObj.BaseAddress = _baseAddress; _httpClientObj.Timeout = s_defaultOperationTimeout; _httpClientObj.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(MediaTypeForDeviceManagementApis)); _httpClientObj.DefaultRequestHeaders.ExpectContinue = false; }
public HttpClientHelper( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, IDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > > defaultErrorMapping, TimeSpan timeout, Action <HttpClient> preRequestActionForAllRequests, IWebProxy customHttpProxy) { this.baseAddress = baseAddress; this.authenticationHeaderProvider = authenticationHeaderProvider; this.defaultErrorMapping = new ReadOnlyDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > >(defaultErrorMapping); this.defaultOperationTimeout = timeout; TlsVersions.Instance.SetLegacyAcceptableVersions(); }
public HttpClientHelper( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, IDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > > defaultErrorMapping, TimeSpan timeout, IWebProxy customHttpProxy) { _baseAddress = baseAddress; _authenticationHeaderProvider = authenticationHeaderProvider; _defaultErrorMapping = new ReadOnlyDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > >(defaultErrorMapping); _defaultOperationTimeout = timeout; // HttpClientHandler is IDisposable, so save onto it for disposing. _httpClientHandler = new HttpClientHandler { #if !NET451 SslProtocols = TlsVersions.Instance.Preferred, CheckCertificateRevocationList = TlsVersions.Instance.CertificateRevocationCheck, #endif }; if (customHttpProxy != DefaultWebProxySettings.Instance) { _httpClientHandler.UseProxy = customHttpProxy != null; _httpClientHandler.Proxy = customHttpProxy; } // We need two types of HttpClients, one with our default operation timeout, and one without. The one without will rely on // a cancellation token. _httpClientWithDefaultTimeout = new HttpClient(_httpClientHandler, false) { BaseAddress = _baseAddress, Timeout = _defaultOperationTimeout, }; _httpClientWithDefaultTimeout.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); _httpClientWithDefaultTimeout.DefaultRequestHeaders.ExpectContinue = false; _httpClientWithNoTimeout = new HttpClient(_httpClientHandler, false) { BaseAddress = _baseAddress, Timeout = Timeout.InfiniteTimeSpan, }; _httpClientWithNoTimeout.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); _httpClientWithNoTimeout.DefaultRequestHeaders.ExpectContinue = false; TlsVersions.Instance.SetLegacyAcceptableVersions(); }
public HttpClientHelper( Uri baseAddress, IAuthorizationHeaderProvider authenticationHeaderProvider, IDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > > defaultErrorMapping, TimeSpan timeout, Action <HttpClient> preRequestActionForAllRequests, #if !WINDOWS_UWP && !PCL X509Certificate2 clientCert, #endif ProductInfo productInfo ) { this.baseAddress = baseAddress; this.authenticationHeaderProvider = authenticationHeaderProvider; this.defaultErrorMapping = new ReadOnlyDictionary <HttpStatusCode, Func <HttpResponseMessage, Task <Exception> > >(defaultErrorMapping); #if !WINDOWS_UWP && !PCL && !NETSTANDARD1_3 WebRequestHandler handler = null; if (clientCert != null) { handler = new WebRequestHandler(); handler.ClientCertificates.Add(clientCert); this.usingX509ClientCert = true; } this.httpClientObj = handler != null ? new HttpClient(handler) : new HttpClient(); #else this.httpClientObj = new HttpClient(); #endif this.httpClientObj.BaseAddress = this.baseAddress; this.httpClientObj.Timeout = timeout; this.httpClientObj.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(CommonConstants.MediaTypeForDeviceManagementApis)); this.httpClientObj.DefaultRequestHeaders.ExpectContinue = false; if (preRequestActionForAllRequests != null) { preRequestActionForAllRequests(this.httpClientObj); } this.productInfo = productInfo; }