8#include <userver/components/component_base.hpp>
9#include <userver/server/http/http_request.hpp>
10#include <userver/yaml_config/schema.hpp>
11#include <userver/yaml_config/yaml_config.hpp>
13USERVER_NAMESPACE_BEGIN
26namespace middlewares {
34 virtual ~HttpMiddlewareBase();
38 virtual void HandleRequest(http::HttpRequest& request, request::RequestContext& context)
const = 0;
41 void Next(http::HttpRequest& request, request::RequestContext& context)
const;
44 friend class handlers::HttpHandlerBase;
54 HttpMiddlewareFactoryBase(
const components::ComponentConfig&,
const components::ComponentContext&);
57 const handlers::HttpHandlerBase& handler,
58 yaml_config::YamlConfig middleware_config
68 const handlers::HttpHandlerBase&,
69 yaml_config::YamlConfig middleware_config
76template <
typename Middleware>
79 static constexpr std::string_view kName = Middleware::kName;
84 std::unique_ptr<
HttpMiddlewareBase> Create(
const handlers::HttpHandlerBase& handler, yaml_config::YamlConfig)
86 return std::make_unique<Middleware>(handler);
93template <
typename Middleware>
94inline constexpr bool components::kHasValidate<server::middlewares::SimpleHttpMiddlewareFactory<Middleware>> =
true;
96template <
typename Middleware>
97inline constexpr auto components::kConfigFileMode<
98 server::middlewares::SimpleHttpMiddlewareFactory<Middleware>> = ConfigFileMode::kNotRequired;