11#include <promeki/config.h>
12#if PROMEKI_ENABLE_HTTP
17PROMEKI_NAMESPACE_BEGIN
48class HttpStatus :
public TypedEnum<HttpStatus> {
50 PROMEKI_REGISTER_ENUM_TYPE(
53 {
"Continue", 100}, {
"SwitchingProtocols", 101}, {
"Processing", 102}, {
"EarlyHints", 103},
56 {
"Ok", 200}, {
"Created", 201}, {
"Accepted", 202}, {
"NonAuthoritativeInformation", 203},
57 {
"NoContent", 204}, {
"ResetContent", 205}, {
"PartialContent", 206},
60 {
"MultipleChoices", 300}, {
"MovedPermanently", 301}, {
"Found", 302}, {
"SeeOther", 303},
61 {
"NotModified", 304}, {
"TemporaryRedirect", 307}, {
"PermanentRedirect", 308},
64 {
"BadRequest", 400}, {
"Unauthorized", 401}, {
"PaymentRequired", 402}, {
"Forbidden", 403},
65 {
"NotFound", 404}, {
"MethodNotAllowed", 405}, {
"NotAcceptable", 406},
66 {
"ProxyAuthenticationRequired", 407}, {
"RequestTimeout", 408}, {
"Conflict", 409}, {
"Gone", 410},
67 {
"LengthRequired", 411}, {
"PreconditionFailed", 412}, {
"PayloadTooLarge", 413},
68 {
"UriTooLong", 414}, {
"UnsupportedMediaType", 415}, {
"RangeNotSatisfiable", 416},
69 {
"ExpectationFailed", 417}, {
"ImATeapot", 418}, {
"MisdirectedRequest", 421},
70 {
"UnprocessableEntity", 422}, {
"Locked", 423}, {
"FailedDependency", 424}, {
"TooEarly", 425},
71 {
"UpgradeRequired", 426}, {
"PreconditionRequired", 428}, {
"TooManyRequests", 429},
72 {
"RequestHeaderFieldsTooLarge", 431}, {
"UnavailableForLegalReasons", 451},
75 {
"InternalServerError", 500}, {
"NotImplemented", 501}, {
"BadGateway", 502},
76 {
"ServiceUnavailable", 503}, {
"GatewayTimeout", 504}, {
"HttpVersionNotSupported", 505},
77 {
"VariantAlsoNegotiates", 506}, {
"InsufficientStorage", 507}, {
"LoopDetected", 508},
78 {
"NotExtended", 510}, {
"NetworkAuthenticationRequired", 511});
80 using TypedEnum<HttpStatus>::TypedEnum;
83 static const HttpStatus Continue;
84 static const HttpStatus SwitchingProtocols;
85 static const HttpStatus Processing;
86 static const HttpStatus EarlyHints;
89 static const HttpStatus Ok;
90 static const HttpStatus Created;
91 static const HttpStatus Accepted;
92 static const HttpStatus NonAuthoritativeInformation;
93 static const HttpStatus NoContent;
94 static const HttpStatus ResetContent;
95 static const HttpStatus PartialContent;
98 static const HttpStatus MultipleChoices;
99 static const HttpStatus MovedPermanently;
100 static const HttpStatus Found;
101 static const HttpStatus SeeOther;
102 static const HttpStatus NotModified;
103 static const HttpStatus TemporaryRedirect;
104 static const HttpStatus PermanentRedirect;
107 static const HttpStatus BadRequest;
108 static const HttpStatus Unauthorized;
109 static const HttpStatus PaymentRequired;
110 static const HttpStatus Forbidden;
111 static const HttpStatus NotFound;
112 static const HttpStatus MethodNotAllowed;
113 static const HttpStatus NotAcceptable;
114 static const HttpStatus ProxyAuthenticationRequired;
115 static const HttpStatus RequestTimeout;
116 static const HttpStatus Conflict;
117 static const HttpStatus Gone;
118 static const HttpStatus LengthRequired;
119 static const HttpStatus PreconditionFailed;
120 static const HttpStatus PayloadTooLarge;
121 static const HttpStatus UriTooLong;
122 static const HttpStatus UnsupportedMediaType;
123 static const HttpStatus RangeNotSatisfiable;
124 static const HttpStatus ExpectationFailed;
125 static const HttpStatus ImATeapot;
126 static const HttpStatus MisdirectedRequest;
127 static const HttpStatus UnprocessableEntity;
128 static const HttpStatus Locked;
129 static const HttpStatus FailedDependency;
130 static const HttpStatus TooEarly;
131 static const HttpStatus UpgradeRequired;
132 static const HttpStatus PreconditionRequired;
133 static const HttpStatus TooManyRequests;
134 static const HttpStatus RequestHeaderFieldsTooLarge;
135 static const HttpStatus UnavailableForLegalReasons;
138 static const HttpStatus InternalServerError;
139 static const HttpStatus NotImplemented;
140 static const HttpStatus BadGateway;
141 static const HttpStatus ServiceUnavailable;
142 static const HttpStatus GatewayTimeout;
143 static const HttpStatus HttpVersionNotSupported;
144 static const HttpStatus VariantAlsoNegotiates;
145 static const HttpStatus InsufficientStorage;
146 static const HttpStatus LoopDetected;
147 static const HttpStatus NotExtended;
148 static const HttpStatus NetworkAuthenticationRequired;
160 String reasonPhrase()
const;
163 bool isInformational()
const {
return value() >= 100 && value() < 200; }
165 bool isSuccess()
const {
return value() >= 200 && value() < 300; }
167 bool isRedirect()
const {
return value() >= 300 && value() < 400; }
169 bool isClientError()
const {
return value() >= 400 && value() < 500; }
171 bool isServerError()
const {
return value() >= 500 && value() < 600; }
173 bool isError()
const {
return isClientError() || isServerError(); }
176inline const HttpStatus HttpStatus::Continue{100};
177inline const HttpStatus HttpStatus::SwitchingProtocols{101};
178inline const HttpStatus HttpStatus::Processing{102};
179inline const HttpStatus HttpStatus::EarlyHints{103};
180inline const HttpStatus HttpStatus::Ok{200};
181inline const HttpStatus HttpStatus::Created{201};
182inline const HttpStatus HttpStatus::Accepted{202};
183inline const HttpStatus HttpStatus::NonAuthoritativeInformation{203};
184inline const HttpStatus HttpStatus::NoContent{204};
185inline const HttpStatus HttpStatus::ResetContent{205};
186inline const HttpStatus HttpStatus::PartialContent{206};
187inline const HttpStatus HttpStatus::MultipleChoices{300};
188inline const HttpStatus HttpStatus::MovedPermanently{301};
189inline const HttpStatus HttpStatus::Found{302};
190inline const HttpStatus HttpStatus::SeeOther{303};
191inline const HttpStatus HttpStatus::NotModified{304};
192inline const HttpStatus HttpStatus::TemporaryRedirect{307};
193inline const HttpStatus HttpStatus::PermanentRedirect{308};
194inline const HttpStatus HttpStatus::BadRequest{400};
195inline const HttpStatus HttpStatus::Unauthorized{401};
196inline const HttpStatus HttpStatus::PaymentRequired{402};
197inline const HttpStatus HttpStatus::Forbidden{403};
198inline const HttpStatus HttpStatus::NotFound{404};
199inline const HttpStatus HttpStatus::MethodNotAllowed{405};
200inline const HttpStatus HttpStatus::NotAcceptable{406};
201inline const HttpStatus HttpStatus::ProxyAuthenticationRequired{407};
202inline const HttpStatus HttpStatus::RequestTimeout{408};
203inline const HttpStatus HttpStatus::Conflict{409};
204inline const HttpStatus HttpStatus::Gone{410};
205inline const HttpStatus HttpStatus::LengthRequired{411};
206inline const HttpStatus HttpStatus::PreconditionFailed{412};
207inline const HttpStatus HttpStatus::PayloadTooLarge{413};
208inline const HttpStatus HttpStatus::UriTooLong{414};
209inline const HttpStatus HttpStatus::UnsupportedMediaType{415};
210inline const HttpStatus HttpStatus::RangeNotSatisfiable{416};
211inline const HttpStatus HttpStatus::ExpectationFailed{417};
212inline const HttpStatus HttpStatus::ImATeapot{418};
213inline const HttpStatus HttpStatus::MisdirectedRequest{421};
214inline const HttpStatus HttpStatus::UnprocessableEntity{422};
215inline const HttpStatus HttpStatus::Locked{423};
216inline const HttpStatus HttpStatus::FailedDependency{424};
217inline const HttpStatus HttpStatus::TooEarly{425};
218inline const HttpStatus HttpStatus::UpgradeRequired{426};
219inline const HttpStatus HttpStatus::PreconditionRequired{428};
220inline const HttpStatus HttpStatus::TooManyRequests{429};
221inline const HttpStatus HttpStatus::RequestHeaderFieldsTooLarge{431};
222inline const HttpStatus HttpStatus::UnavailableForLegalReasons{451};
223inline const HttpStatus HttpStatus::InternalServerError{500};
224inline const HttpStatus HttpStatus::NotImplemented{501};
225inline const HttpStatus HttpStatus::BadGateway{502};
226inline const HttpStatus HttpStatus::ServiceUnavailable{503};
227inline const HttpStatus HttpStatus::GatewayTimeout{504};
228inline const HttpStatus HttpStatus::HttpVersionNotSupported{505};
229inline const HttpStatus HttpStatus::VariantAlsoNegotiates{506};
230inline const HttpStatus HttpStatus::InsufficientStorage{507};
231inline const HttpStatus HttpStatus::LoopDetected{508};
232inline const HttpStatus HttpStatus::NotExtended{510};
233inline const HttpStatus HttpStatus::NetworkAuthenticationRequired{511};