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(); }
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)); } } }
public static object RespondWithValidationFailure(this Negotiator negotiate, string message) { var model = new ValidationFailedResponse(message); return(negotiate .WithModel(model) .WithStatusCode(HttpStatusCode.BadRequest)); }
public static Negotiator RespondWithValidationFailure(this Negotiator negotiate, ModelValidationResult validationResult) { var model = new ValidationFailedResponse(validationResult); return(negotiate .WithModel(model) .WithStatusCode(HttpStatusCode.BadRequest)); }
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); }