11#include <userver/utils/not_null.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 {
101 void HookPerformRequest(RequestState& request);
103 void HookCreateSpan(RequestState& request,
tracing::Span& span);
105 void HookOnCompleted(RequestState& request, Response& response);
107 void HookOnError(RequestState& request, std::error_code ec);
109 bool HookOnRetry(RequestState& request);