10#include <userver/utils/not_null.hpp>
11#include <userver/utils/span.hpp>
12#include <userver/utils/zstring_view.hpp>
14USERVER_NAMESPACE_BEGIN
20namespace clients::http {
27class PluginRequest
final {
30 explicit PluginRequest(RequestState& state);
33 void SetHeader(std::string_view name, std::string_view value);
35 void AddQueryParams(std::string_view params);
37 void SetTimeout(std::chrono::milliseconds ms);
41 bool IsProxySet()
const;
43 const std::string& GetOriginalUrl()
const;
52 explicit Plugin(std::string name);
54 virtual ~Plugin() =
default;
85 virtual void HookOnError(PluginRequest& request, std::error_code ec) = 0;
92 const std::string name_;
97class PluginPipeline
final {
99 PluginPipeline() =
default;
100 explicit PluginPipeline(utils::span<
const utils::
NotNull<
Plugin*>> plugins);
102 void HookPerformRequest(RequestState& request);
104 void HookCreateSpan(RequestState& request,
tracing::Span& span);
106 void HookOnCompleted(RequestState& request, Response& response);
108 void HookOnError(RequestState& request, std::error_code ec);
110 bool HookOnRetry(RequestState& request);