private async Task <HttpResponseMessage> SendAsyncRequest(HttpMethod method, string requestUri, List <KeyValuePair <string, string> > parameters) { if (parameters == null && (method == HttpMethod.Post || method == HttpMethod.Put)) { throw new InvalidOperationException("Attempt to perform a post or put with no parameters."); } if (method == HttpMethod.Get || method == HttpMethod.Delete) { requestUri = requestUri + UserNameParam(); } else { parameters.Add(new KeyValuePair <string, string>(WebHCatResources.UserName, this.hadoopUserName)); } var request = new HttpRequestMessage(method, requestUri); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(WebHCatResources.ApplicationJson)); if (method == HttpMethod.Post || method == HttpMethod.Put) { request.Content = new FormUrlEncodedContent(parameters.Where(kvp => kvp.Value != null)); } var certValidationCallback = new ClusterAmbariApiHelper.CertificateValidationHelper(); try { if (!validateServerCert) { ServicePointManager.ServerCertificateValidationCallback += certValidationCallback.ServerCertificateValidationCallback; } var cts = new CancellationTokenSource(); cts.CancelAfter(this.Timeout); try { return(await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, cts.Token)); } catch (TaskCanceledException) { throw new HttpResponseException(HttpStatusCode.GatewayTimeout); } } finally { if (!validateServerCert) { ServicePointManager.ServerCertificateValidationCallback -= certValidationCallback.ServerCertificateValidationCallback; } } }
private async Task<HttpResponseMessage> SendAsyncRequest(HttpMethod method, string requestUri, List<KeyValuePair<string, string>> parameters) { if (parameters == null && (method == HttpMethod.Post || method == HttpMethod.Put)) { throw new InvalidOperationException("Attempt to perform a post or put with no parameters."); } if (method == HttpMethod.Get || method == HttpMethod.Delete) { requestUri = requestUri + UserNameParam(); } else { parameters.Add(new KeyValuePair<string, string>(WebHCatResources.UserName, this.hadoopUserName)); } var request = new HttpRequestMessage(method, requestUri); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(WebHCatResources.ApplicationJson)); if (method == HttpMethod.Post || method == HttpMethod.Put) { request.Content = new FormUrlEncodedContent(parameters.Where(kvp => kvp.Value != null)); } var certValidationCallback = new ClusterAmbariApiHelper.CertificateValidationHelper(); try { if (!validateServerCert) { ServicePointManager.ServerCertificateValidationCallback += certValidationCallback.ServerCertificateValidationCallback; } var cts = new CancellationTokenSource(); cts.CancelAfter(this.Timeout); try { return await client.SendAsync(request, HttpCompletionOption.ResponseContentRead, cts.Token); } catch(TaskCanceledException) { throw new HttpResponseException(HttpStatusCode.GatewayTimeout); } } finally { if (!validateServerCert) { ServicePointManager.ServerCertificateValidationCallback -= certValidationCallback.ServerCertificateValidationCallback; } } }