9#include <userver/clients/http/error.hpp>
10#include <userver/clients/http/local_stats.hpp>
11#include <userver/http/header_map.hpp>
12#include <userver/server/http/http_response_cookie.hpp>
13#include <userver/utils/str_icase.hpp>
15USERVER_NAMESPACE_BEGIN
17namespace clients::
http {
25 SwitchingProtocols = 101,
33 NonAuthoritativeInformation = 203,
38 AlreadyReported = 208,
43 MultipleChoices = 300,
44 MovedPermanently = 301,
50 TemporaryRedirect = 307,
51 PermanentRedirect = 308,
56 PaymentRequired = 402,
59 MethodNotAllowed = 405,
61 ProxyAuthenticationRequired = 407,
66 PreconditionFailed = 412,
67 PayloadTooLarge = 413,
69 UnsupportedMediaType = 415,
70 RangeNotSatisfiable = 416,
71 ExpectationFailed = 417,
75 MisdirectedRequest = 421,
76 UnprocessableEntity = 422,
78 FailedDependency = 424,
80 UpgradeRequired = 426,
81 PreconditionRequired = 428,
82 TooManyRequests = 429,
83 RequestHeaderFieldsTooLarge = 431,
84 NginxNoResponse = 444,
85 UnavailableForLegalReasons = 451,
86 NginxRequestHeaderTooLarge = 494,
87 NginxSSLCertificateError = 495,
88 NginxSSLCertificateRequired = 496,
89 NginxHTTPRequestSenttoHTTPSPort = 497,
90 NginxClientClosedRequest = 499,
93 InternalServerError = 500,
96 ServiceUnavailable = 503,
98 HttpVersionNotSupported = 505,
99 VariantAlsoNegotiates = 506,
100 InsufficientStorage = 507,
102 BandwidthLimitExceeded = 509,
104 NetworkAuthenticationRequired = 511,
105 WebServerIsDown = 520,
106 ConnectionTimedOut = 522,
107 OriginIsUnreachable = 523,
108 TimeoutOccurred = 524,
109 SslHandshakeFailed = 525,
110 InvalidSslCertificate = 526,
113std::ostream& operator<<(std::ostream& os,
Status s);
116using Headers = USERVER_NAMESPACE::http::
headers::HeaderMap;
119class Response
final {
121 using CookiesMap = server::http::Cookie::CookiesMap;
123 Response() =
default;
129 std::string
body()
const& {
return response_; }
130 std::string&& body() && {
return std::move(response_); }
136 const Headers&
headers()
const {
return headers_; }
137 Headers& headers() {
return headers_; }
138 const CookiesMap& cookies()
const {
return cookies_; }
139 CookiesMap& cookies() {
return cookies_; }
145 bool IsError()
const {
return static_cast<uint16_t>(
status_code()) >= 400; }
147 static void RaiseForStatus(
int code,
const LocalStats& stats);
149 void raise_for_status()
const;
155 void SetStats(
const LocalStats& stats) { stats_ = stats; }
156 void SetStatusCode(
Status status_code) { status_code_ = status_code; }
161 std::string response_;