protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { counter.Inc(); var sw = System.Diagnostics.Stopwatch.StartNew(); //Step 1: Authentication if (!processPaymentData.ValidateAuthentication(request, out HttpStatusCode sCode, out string eMessage)) { return new HttpResponseMessage(sCode) { Content = new StringContent(eMessage) } } ; //Step 2: Content Type Validation if (!processPaymentData.ValidateContentType(request, out HttpStatusCode statusCode, out string errorMessage)) { return new HttpResponseMessage(statusCode) { Content = new StringContent(errorMessage) } } ; //Step 3: Data Validation if (!processPaymentData.ValidatePaymentData(request, out HttpStatusCode responseCode, out string errMessage, out PaymentData paymentData)) { return new HttpResponseMessage(responseCode) { Content = new StringContent(errMessage) } } ; //Step 4: Manage Response Message var response = await base.SendAsync(request, cancellationToken); HttpResponseMessage responseMsg = dataService.SaveProcessData(paymentData, response.IsSuccessStatusCode ? response.Content.ReadAsAsync <string[]>().Result : null); sw.Stop(); applicationMetrics.CreateHistogram().Observe(sw.Elapsed.TotalSeconds); logger.Info("Payment process completed at " + DateTime.Now); return(responseMsg); } } }
public IActionResult PaymentHistory([FromQuery] ResourceParameters resourceParameters) { try { counter.Inc(); var sw = System.Diagnostics.Stopwatch.StartNew(); var payHistory = paymentRepository.GetPaymentHistory(resourceParameters, out string errorMessage); var previousPageLink = payHistory.HasPrevious ? CreatePaymentHistoryResourceUri(resourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = payHistory.HasNext ? CreatePaymentHistoryResourceUri(resourceParameters, ResourceUriType.NextPage) : null; var paginationData = new { totalCount = payHistory.TotalCount, pageSize = payHistory.PageSize, currentPage = payHistory.CurrentPage, totalPages = payHistory.TotalPages, previousPageLink, nextPageLink }; Response.Headers.Add("X-Pagination", System.Text.Json.JsonSerializer.Serialize(paginationData)); sw.Stop(); applicationMetrics.CreateHistogram().Observe(sw.Elapsed.TotalSeconds); if (errorMessage.Trim() == string.Empty) { return(Ok(mapper.Map <List <PaymentHistory> >(payHistory))); } logger.Error(errorMessage.Trim()); } catch (Exception ex) { logger.Error(ex.ToString()); } return(BadRequest()); }