/// <summary> /// Http Request Async /// </summary> /// <param name="client"></param> /// <param name="httpMethod"></param> /// <param name="payLoad"></param> /// <param name="apiConfigSettings"></param> /// <param name="queryString"></param> /// <param name="headers"></param> /// <param name="contentType"></param> /// <returns></returns> public static async Task <HttpResponseMessage> RequestAsync <T>( this T client, HttpMethod httpMethod, IApiConfigurationSettings apiConfigSettings, string queryString = null, List <KeyValuePair <string, string> > headers = null, string contentType = null, HttpContent payLoad = null) where T : HttpClient { using (var cancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(apiConfigSettings.TimeoutInMs))) { var startedTime = DateTime.Now; try { client.SetHttpClientDefaultRequestHeaders(); var requestMessage = SetHttpClientRequestMessageHeaders(headers, contentType, HttpClientRequestMessage(httpMethod, queryString, payLoad)); var httpResponseMessage = await client.SendAsync(requestMessage, cancellationToken.Token); httpResponseMessage.EnsureSuccessStatusCode(); return(httpResponseMessage); } catch (OperationCanceledException e) { if (!cancellationToken.Token.IsCancellationRequested) { throw new TimeoutException($"An HTTP request to {apiConfigSettings.BaseUrl} timed out ({(int)new TimeSpan(apiConfigSettings.TimeoutInMs).TotalSeconds} seconds.\n\n{e.Message})"); } throw; } } }
/// <summary> /// Customer Quotation Service /// </summary> /// <param name="logger"></param> /// <param name="configuration"></param> /// <param name="exchangeRateService"></param> /// <param name="segmentTaxService"></param> public QuotationService(ILogger <QuotationService> logger, IConfiguration configuration, IExchangeRateService exchangeRateService, ISegmentTaxService segmentTaxService) { _logger = logger; ExchangeSettings = configuration.GetSection("ExchangeSettings").Get <ApiConfigurationSettings>(); TaxSettings = configuration.GetSection("TaxSettings").Get <ApiConfigurationSettings>(); SegmentTaxSvc = segmentTaxService; ExchangeRateSvc = exchangeRateService; }
/// <summary> /// Default Constructor /// </summary> /// <param name="httpClient"></param> /// <param name="logger"></param> /// <param name="configuration"></param> public ExchangeRateService(HttpClient httpClient, ILogger <ExchangeRateService> logger, IConfiguration configuration) { _httpClient = httpClient; _logger = logger; ExchangeSettings = configuration.GetSection("ExchangeSettings").Get <ApiConfigurationSettings>(); }