private static async Task HandleExceptionAsync(HttpContext context, Exception exception) { HttpStatusCode status; var exceptionType = exception.GetType(); if (exceptionType == typeof(BadRequestException)) { status = HttpStatusCode.BadRequest; } else if (exceptionType == typeof(NotFoundException)) { status = HttpStatusCode.NotFound; } else { status = HttpStatusCode.InternalServerError; } var failedResponse = new FailedResponse(exception); string result = JsonSerializer.Serialize(failedResponse); context.Response.ContentType = ContentTypeJson; context.Response.StatusCode = (int)status; await context.Response.WriteAsync(result); return; }
public async Task <TResponse> ExecuteAsync <T, TResult>(ServiceRequest <T> request, Func <T, Task <TResult> > action) { Guard.ThrowIfNull(request, nameof(request)); Guard.ThrowIfNull(action, nameof(action)); _logger.Information(request.CorrelationId, $"{action.Method.Name} => Started"); ServiceResponse response; var timer = new Stopwatch(); try { timer.Start(); var result = await action(request.Content); timer.Stop(); _logger.Verbose(request.CorrelationId, $"{action.Method.Name} => Execution time: {timer.ElapsedMilliseconds}"); response = new OkResponse <TResult>(request.CorrelationId, result); } catch (Exception ex) { _logger.Error(request.CorrelationId, ex, $"{action.Method.Name} => Failed."); response = new FailedResponse(request.CorrelationId, ex, action.Method.Name); } finally { _logger.Information(request.CorrelationId, $"{action.Method.Name} => Finished"); } var convertedResponse = _converter(response); return(convertedResponse); }
public static Negotiator RespondWithFailure(this Negotiator negotiate, Exception exception) { var model = new FailedResponse(exception); return(negotiate .WithModel(model) .WithStatusCode(HttpStatusCode.InternalServerError)); }
public void TestFailedResponseTypeCreation() { var response = new FailedResponse(250, "Failure", new ArgumentException("test")); Assert.IsFalse(response.IsSuccess); Assert.IsNotNull(response.Exception); Assert.IsTrue(response.Message == "Failure"); Assert.IsTrue(response.ResponseCode == 250); }
public void TestFailedResponseOfTypeCtorCreation() { var response = new FailedResponse <Foo>(250, "Error", new ArgumentNullException("test")); Assert.IsFalse(response.IsSuccess); Assert.IsNotNull(response.Exception); Assert.IsTrue(response.Message == "Error"); Assert.IsTrue(response.ResponseCode == 250); Assert.IsNull(response.Item); }
public void TestFailedResponseOfTypeDefaultCreation() { var response = new FailedResponse <Foo>(250); Assert.IsFalse(response.IsSuccess); Assert.IsNull(response.Exception); Assert.IsTrue(response.Message == string.Empty); Assert.IsTrue(response.ResponseCode == 250); Assert.IsNull(response.Item); }
public IPaymentResponse Charge(PaymentRequest request) { request.Additional.TryGetValue("firstName", out var firstName); request.Additional.TryGetValue("lastName", out var lastName); var email = Guid.NewGuid().ToString() + "@email.com"; var customerParameters = new Customer() { FirstName = (string)firstName, LastName = (string)lastName, Email = email }; var money = new Money { Currency = request.Currency, Value = request.TotalAmount }; var dwollaApi = new DwollaApi(Setting); var failedResponse = new FailedResponse("Payment failed") { requestId = request.Id }; var customer = dwollaApi.CreateCustomer(customerParameters).Result; if (!customer.IsSuccessStatusCode) { failedResponse.Message = customer.Content; return(failedResponse); } var iavToken = dwollaApi.CreateIavToken(customer.Headers.Location.ToString()).Result; if (string.IsNullOrEmpty(iavToken.Token)) { failedResponse.Message = "Getting IAV token failed"; return(failedResponse); } var response = new HiddenFormResponse { requestId = request.Id }; response.html = GetHtml(Setting.IsUsingSanbox, iavToken.Token, money, request); return(response); }