Example #1
0
    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;
    }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #7
0
        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);
        }