userver: userver/storages/secdist/provider_component.hpp Source File
Loading...
Searching...
No Matches
provider_component.hpp
1#pragma once
2
3/// @file userver/storages/secdist/component.hpp
4/// @brief @copybrief components::DefaultSecdistProvider
5
6#include <string>
7
8#include <userver/components/component_base.hpp>
9#include <userver/storages/secdist/provider.hpp>
10#include <userver/storages/secdist/secdist.hpp>
11
12USERVER_NAMESPACE_BEGIN
13
14namespace storages::secdist {
15
16class DefaultLoader final : public storages::secdist::SecdistProvider {
17public:
18 struct Settings {
19 std::string config_path;
20 SecdistFormat format{SecdistFormat::kJson};
21 bool missing_ok{false};
22 std::optional<std::string> environment_secrets_key;
23 engine::TaskProcessor* blocking_task_processor{nullptr};
24 formats::json::Value inline_config;
25 };
26
27 explicit DefaultLoader(Settings settings);
28
29 formats::json::Value Get() const override;
30
31private:
32 Settings settings_;
33};
34
35} // namespace storages::secdist
36
37namespace components {
38
39/// @ingroup userver_components
40///
41/// @brief Component that stores security related data (keys, passwords, ...).
42///
43/// The component must be configured in service config.
44///
45/// ## Static options of components::DefaultSecdistProvider :
46/// @include{doc} scripts/docs/en/components_schema/core/src/storages/secdist/provider_component.md
47///
48/// Options inherited from @ref components::ComponentBase :
49/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
50class DefaultSecdistProvider final : public ComponentBase, public storages::secdist::SecdistProvider {
51public:
52 /// @ingroup userver_component_names
53 /// @brief The default name of @ref components::DefaultSecdistProvider
54 static constexpr std::string_view kName = "default-secdist-provider";
55
56 DefaultSecdistProvider(const ComponentConfig&, const ComponentContext&);
57
58 formats::json::Value Get() const override;
59
60 static yaml_config::Schema GetStaticConfigSchema();
61
62private:
63 storages::secdist::DefaultLoader loader_;
64};
65
66template <>
67inline constexpr bool kHasValidate<DefaultSecdistProvider> = true;
68
69} // namespace components
70
71USERVER_NAMESPACE_END