public async Task <ActionResult <GetLoanOptionsResponsePayload> > Post(GetLoanOptionsRequestPayload request) { var sender = factory.GetSender <GetLoanOptionsRequestPayload, GetLoanOptionsResponsePayload>(); var response = await sender.SendRequest(request); return(response); }
static async Task SendRequests(RequestResponseFactory factory) { // get number of requests to make var requestsToSend = GetNumberInActionArgs(0); var msDelayBetweenReqs = GetNumberInActionArgs(1); var httpEndpoint = GetActionArg(2); if (httpEndpoint != null) { SetupHttpClient(httpEndpoint); } var sender = factory.GetSender <GetLoanOptionsRequestPayload, GetLoanOptionsResponsePayload>(); sender.RequestSending += (r, m) => { logger.WriteOutput($"{r.Id:000} REQUEST: CreditScore = {r.CreditScore}, SessionId = {m.ReplyToSessionId}"); }; var random = new Random(); var outstandingRequests = new Task[requestsToSend]; logger.WriteOutput("Sending requests..."); for (var i = 0; i < requestsToSend; i++) { var payload = new GetLoanOptionsRequestPayload { Id = i, CreditScore = random.Next(300, 801) }; var rememberI = i; if (httpEndpoint == null) { outstandingRequests[i] = sender.SendRequest(payload).ContinueWith(async t => { if (t.IsFaulted) { foreach (var e in t.Exception.InnerExceptions) { logger.WriteOutput($"{rememberI:000} Failure: {e.Message}"); } return; } var response = await t; logger.WriteOutput($"{rememberI:000} RESPONSE: Provider = {response.Provider}, Loan = {response.LoanAmount}"); }); } else { outstandingRequests[i] = SendHttpRequest(payload).ContinueWith(async t => { var response = await t; logger.WriteOutput($"{rememberI:000} RESPONSE: Provider = {response.Provider}, Loan = {response.LoanAmount}"); }); } await Task.Delay(msDelayBetweenReqs); } await Task.WhenAll(outstandingRequests); logger.Stop(); if (httpEndpoint == null) { OutputAppMessage($"Average Round Trip Time (sec): {Math.Round(sender.AverageRTTms / 1000.0, 3)}"); OutputAppMessage($"Min Round Trip Time (sec): {Math.Round(sender.MinRTTms / 1000.0, 3)}"); OutputAppMessage($"Max Round Trip Time (sec): {Math.Round(sender.MaxRTTms / 1000.0, 3)}"); } else { OutputAppMessage($"Average Round Trip Time (sec): {Math.Round(SendOverHttp_AverageRTTms / 1000.0, 3)}"); OutputAppMessage($"Min Round Trip Time (sec): {Math.Round(SendOverHttp_MinRTTms / 1000.0, 3)}"); OutputAppMessage($"Max Round Trip Time (sec): {Math.Round(SendOverHttp_MaxRTTms / 1000.0, 3)}"); } }