userver: /home/antonyzhilin/arcadia/taxi/uservices/userver/libraries/grpc-protovalidate/src/grpc-protovalidate/server/component.cpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
component.cpp
1#include <userver/grpc-protovalidate/server/component.hpp>
2
3#include <userver/ugrpc/server/middlewares/deadline_propagation/component.hpp>
4#include <userver/yaml_config/merge_schemas.hpp>
5
6#include <grpc-protovalidate/server/middleware.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10namespace grpc_protovalidate::server {
11
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);
15 settings.send_violations = config["send-violations"].As<bool>(settings.send_violations);
16 return settings;
17}
18
19Settings Parse(const yaml_config::YamlConfig& config, formats::parse::To<Settings>) {
20 Settings settings;
21 settings.global.fail_fast = config["fail-fast"].As<bool>(settings.global.fail_fast);
22 settings.global.send_violations = config["send-violations"].As<bool>(settings.global.send_violations);
23 settings.per_method = config["methods"].As<utils::impl::TransparentMap<std::string, ValidationSettings>>({});
24 return settings;
25}
26
30)
32 config,
33 context,
37 ) {}
38
40 const ugrpc::server::ServiceInfo&,
42) const {
44}
45
47
50type: object
51description: gRPC request validator component
52additionalProperties: false
53properties:
54 fail-fast:
55 type: boolean
56 description: do not check remaining constraints after first error is encountered
57 defaultDescription: true
58 send-violations:
59 type: boolean
60 description: send found constraint violations in grpc::Status
61 defaultDescription: false
62 methods:
63 type: object
64 description: per-method middleware options overrides
65 properties: {}
66 additionalProperties:
67 type: object
68 description: method options
69 additionalProperties: false
70 properties:
71 fail-fast:
72 type: boolean
73 description: see 'fail-fast' global option
74 send-violations:
75 type: boolean
76 description: see 'send-violations' global option
77)");
78}
79
80} // namespace grpc_protovalidate::server
81
82USERVER_NAMESPACE_END