userver: userver/server/middlewares/headers_propagator.hpp Source File
Loading...
Searching...
No Matches
headers_propagator.hpp
1#pragma once
2
3#include <userver/server/middlewares/http_middleware_base.hpp>
4
5USERVER_NAMESPACE_BEGIN
6
7namespace server::middlewares {
8
9class HeadersPropagator final : public HttpMiddlewareBase {
10 public:
11 explicit HeadersPropagator(const handlers::HttpHandlerBase&,
12 std::vector<std::string> headers);
13
14 private:
15 void HandleRequest(http::HttpRequest& request,
16 request::RequestContext& context) const override;
17
18 std::vector<std::string> headers_;
19};
20
21class HeadersPropagatorFactory final : public HttpMiddlewareFactoryBase {
22 public:
23 static constexpr std::string_view kName = "headers-propagator";
24
25 HeadersPropagatorFactory(const components::ComponentConfig&,
26 const components::ComponentContext&);
27
28 static yaml_config::Schema GetStaticConfigSchema();
29
30 private:
31 std::unique_ptr<HttpMiddlewareBase> Create(
32 const handlers::HttpHandlerBase&,
33 yaml_config::YamlConfig middleware_config) const override;
34
35 std::vector<std::string> headers_;
36};
37
38} // namespace server::middlewares
39
40template <>
41inline constexpr bool
42 components::kHasValidate<server::middlewares::HeadersPropagatorFactory> =
43 true;
44
45template <>
46inline constexpr auto
47 components::kConfigFileMode<server::middlewares::HeadersPropagatorFactory> =
49
50USERVER_NAMESPACE_END