10namespace grpc_protovalidate::client {
12ValidationSettings Parse(
const yaml_config::YamlConfig& config, formats::parse::To<ValidationSettings>) {
13 ValidationSettings settings;
14 settings.fail_fast = config[
"fail-fast"].As<
bool>(settings.fail_fast);
18Settings Parse(
const yaml_config::YamlConfig& config, formats::parse::To<Settings>) {
20 settings.global.fail_fast = config[
"fail-fast"].As<
bool>(settings.global.fail_fast);
21 settings.per_method = config[
"methods"].As<utils::impl::TransparentMap<std::string, ValidationSettings>>({});
25ValidatorComponent::ValidatorComponent(
26 const components::ComponentConfig& config,
27 const components::ComponentContext& context
29 : ugrpc::client::MiddlewareFactoryComponentBase(
32 middlewares::MiddlewareDependencyBuilder().InGroup<middlewares::groups::Core>()
35std::shared_ptr<
const ugrpc::client::MiddlewareBase> ValidatorComponent::CreateMiddleware(
36 const ugrpc::client::ClientInfo& ,
37 const yaml_config::YamlConfig& middleware_config
39 return std::make_shared<Middleware>(middleware_config.As<Settings>());
42yaml_config::Schema ValidatorComponent::GetMiddlewareConfigSchema()
const {
return GetStaticConfigSchema(); }
44yaml_config::Schema ValidatorComponent::GetStaticConfigSchema() {
45 return yaml_config::MergeSchemas<ugrpc::client::MiddlewareFactoryComponentBase>(R"(
46type: object
47description: gRPC response validator component
48additionalProperties: false
49properties:
50 fail-fast:
51 type: boolean
52 description: do not check remaining constraints after first error is encountered
53 defaultDescription: true
54 methods:
55 type: object
56 description: per-method middleware options overrides
57 properties: {}
58 additionalProperties:
59 type: object
60 description: method options
61 additionalProperties: false
62 properties:
63 fail-fast:
64 type: boolean
65 description: see 'fail-fast' global option
66)");