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