Esempio n. 1
0
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            if (!context.ModelState.IsValid)
            {
                var errorsFromValidator = context.ModelState
                                          .Where(x => x.Value.Errors.Count > 0)
                                          .ToDictionary(pair => pair.Key, pair => pair.Value.Errors.Select(e => e.ErrorMessage))
                                          .ToList();

                var response = new ValidationFailedResponse {
                    Errors = new List <FiledErrors>()
                };
                foreach (var(field, messages) in errorsFromValidator)
                {
                    response.Errors.Add(new FiledErrors
                    {
                        Field    = field,
                        Messages = messages
                    });
                }

                context.Result = new BadRequestObjectResult(response)
                {
                    StatusCode = StatusCodes.Status422UnprocessableEntity
                };

                _logger.Debug("Error occured while processing model.");
                return;
            }

            await next();
        }
Esempio n. 2
0
 private static void ProcessRequests(object? listener)
 {
     while (true)
     {
         var context = ((HttpListener?)listener)!.GetContext();
         try
         {
             ProcessRequest(context);
         }
         catch (HttpStatusCodeException statusCodeException)
         {
             SetResponse(
                 context.Response,
                 statusCodeException.Code,
                 ErrorResponse.FromException(statusCodeException));
         }
         catch (ValidationException validationException)
         {
             SetResponse(
                 context.Response,
                 HttpStatusCode.BadRequest,
                 ValidationFailedResponse.FromException(validationException));
         }
         catch (Exception exception)
         {
             SetResponse(
                 context.Response,
                 HttpStatusCode.InternalServerError,
                 new ErrorResponse(
                     (int)HttpStatusCode.InternalServerError,
                     exception.Message));
         }
     }
 }
Esempio n. 3
0
        public static object RespondWithValidationFailure(this Negotiator negotiate, string message)
        {
            var model = new ValidationFailedResponse(message);

            return(negotiate
                   .WithModel(model)
                   .WithStatusCode(HttpStatusCode.BadRequest));
        }
Esempio n. 4
0
        public static Negotiator RespondWithValidationFailure(this Negotiator negotiate, ModelValidationResult validationResult)
        {
            var model = new ValidationFailedResponse(validationResult);

            return(negotiate
                   .WithModel(model)
                   .WithStatusCode(HttpStatusCode.BadRequest));
        }
Esempio n. 5
0
        public void ValidationExceptionResponseConstructorTest(string message)
        {
            var dic = new Dictionary <string, List <string> >();
            var sut = new ValidationFailedResponse(dic, message);

            sut.Errors.Should().BeEquivalentTo(dic);
            sut.Message.Should().Be(message);
            sut.Status.Should().Be(400);
        }
        private static void ValidateErrors(IEnumerable <ValidationFailure> errors, ValidationFailedResponse responseObject)
        {
            var expected = new Dictionary <string, List <string> >();

            foreach (var error in errors)
            {
                if (!expected.ContainsKey(error.PropertyName))
                {
                    expected.Add(error.PropertyName, new List <string>());
                }
                var errorObject = new
                {
                    ErrorCode    = error.ErrorCode,
                    ErrorMessage = error.ErrorMessage,
                    CustomState  = error.CustomState
                };
                expected[error.PropertyName].Add(JsonSerializer.Serialize(errorObject));
            }

            responseObject.Errors.Should().BeEquivalentTo(expected);
        }