10#include <userver/utils/not_null.hpp>
12USERVER_NAMESPACE_BEGIN
14namespace clients::
http {
21class PluginRequest
final {
24 explicit PluginRequest(RequestState& state);
27 void SetHeader(std::string_view name, std::string value);
29 void SetTimeout(std::chrono::milliseconds ms);
38 explicit Plugin(std::string name);
40 virtual ~Plugin() =
default;
62 const std::string name_;
67class PluginPipeline
final {
69 PluginPipeline(
const std::vector<utils::NotNull<Plugin*>>& plugins);
71 void HookPerformRequest(RequestState& request);
73 void HookCreateSpan(RequestState& request);
75 void HookOnCompleted(RequestState& request, Response& response);
78 const std::vector<utils::NotNull<Plugin*>> plugins_;