8#include <userver/components/loggable_component_base.hpp>
9#include <userver/yaml_config/schema.hpp>
10#include <userver/yaml_config/yaml_config.hpp>
12USERVER_NAMESPACE_BEGIN
37 virtual ~HttpMiddlewareBase();
42 request::RequestContext& context)
const = 0;
45 void Next(http::HttpRequest& request,
request::RequestContext& context)
const;
50 std::unique_ptr<HttpMiddlewareBase> next_{
nullptr};
58 HttpMiddlewareFactoryBase(
const components::ComponentConfig&,
61 std::unique_ptr<HttpMiddlewareBase> CreateChecked(
62 const handlers::HttpHandlerBase& handler,
63 yaml_config::YamlConfig middleware_config)
const;
81template <
typename Middleware>
84 static constexpr std::string_view kName = Middleware::kName;
89 std::unique_ptr<HttpMiddlewareBase> Create(
90 const handlers::HttpHandlerBase& handler,
91 yaml_config::YamlConfig)
const override {
92 return std::make_unique<Middleware>(handler);
99template <
typename Middleware>
100inline constexpr bool components::kHasValidate<
101 server::middlewares::SimpleHttpMiddlewareFactory<Middleware>> =
true;
103template <
typename Middleware>
104inline constexpr auto components::kConfigFileMode<
105 server::middlewares::SimpleHttpMiddlewareFactory<Middleware>> =