userver: /data/code/userver/libraries/grpc-protovalidate/src/grpc-protovalidate/client/component.cpp Source File
Loading...
Searching...
No Matches
component.cpp
1#include <userver/grpc-protovalidate/client/component.hpp>
2
3#include <userver/ugrpc/client/middlewares/log/component.hpp>
4#include <userver/yaml_config/merge_schemas.hpp>
5
6#include <grpc-protovalidate/client/middleware.hpp>
7
8#ifndef ARCADIA_ROOT
9#include "generated/src/grpc-protovalidate/client/component.yaml.hpp" // Y_IGNORE
10#endif
11
12USERVER_NAMESPACE_BEGIN
13
14namespace grpc_protovalidate::client {
15
16ValidationSettings Parse(const yaml_config::YamlConfig& config, formats::parse::To<ValidationSettings>) {
17 ValidationSettings settings;
18 settings.fail_fast = config["fail-fast"].As<bool>(settings.fail_fast);
19 settings.validate_requests = config["validate-requests"].As<bool>(settings.validate_requests);
20 return settings;
21}
22
23Settings Parse(const yaml_config::YamlConfig& config, formats::parse::To<Settings>) {
24 Settings settings;
25 settings.global.fail_fast = config["fail-fast"].As<bool>(settings.global.fail_fast);
26 settings.global.validate_requests = config["validate-requests"].As<bool>(settings.global.validate_requests);
27 settings.per_method = config["methods"].As<utils::impl::TransparentMap<std::string, ValidationSettings>>({});
28 return settings;
29}
30
31ValidatorComponent::ValidatorComponent(
32 const components::ComponentConfig& config,
33 const components::ComponentContext& context
34)
35 : ugrpc::client::MiddlewareFactoryComponentBase(
36 config,
37 context,
38 middlewares::MiddlewareDependencyBuilder().InGroup<middlewares::groups::Core>()
39 ) {}
40
41std::shared_ptr<const ugrpc::client::MiddlewareBase> ValidatorComponent::CreateMiddleware(
42 const ugrpc::client::ClientInfo& /*client_info*/,
43 const yaml_config::YamlConfig& middleware_config
44) const {
45 return std::make_shared<Middleware>(middleware_config.As<Settings>());
46}
47
48yaml_config::Schema ValidatorComponent::GetMiddlewareConfigSchema() const { return GetStaticConfigSchema(); }
49
50yaml_config::Schema ValidatorComponent::GetStaticConfigSchema() {
51 return yaml_config::MergeSchemasFromResource<
52 ugrpc::client::MiddlewareFactoryComponentBase>("src/grpc-protovalidate/client/component.yaml");
53}
54
55} // namespace grpc_protovalidate::client
56
57USERVER_NAMESPACE_END