26void Middleware::PreSendMessage(ugrpc::client::MiddlewareCallContext& context,
const google::protobuf::Message& request)
28 const ValidationSettings& settings = settings_.Get(context.GetCallName());
29 if (!settings.validate_requests) {
32 const ValidationResult result = ValidateMessage(request, {.fail_fast = settings.fail_fast});
33 if (result.IsSuccess()) {
36 const ValidationError& error = result.GetError();
37 switch (error.GetType()) {
38 case ValidationError::Type::kInternal:
39 throw ValidatorError(context.GetCallName());
40 case ValidationError::Type::kRule:
42 throw RequestError(context.GetCallName(), error.GetViolations());
47void Middleware::PostRecvMessage(
48 ugrpc::client::MiddlewareCallContext& context,
49 const google::protobuf::Message& response
51 const ValidationSettings& settings = settings_.Get(context.GetCallName());
52 const ValidationResult result = ValidateMessage(response, {.fail_fast = settings.fail_fast});
53 if (result.IsSuccess()) {
56 const ValidationError& error = result.GetError();
57 switch (error.GetType()) {
58 case ValidationError::Type::kInternal:
59 throw ValidatorError(context.GetCallName());
60 case ValidationError::Type::kRule:
62 throw ResponseError(context.GetCallName(), error.GetViolations());