- Some switches to u64 instead of usize - For now, allow(unstable) - use associated types for all the Network stuff
1773 lines
54 KiB
Rust
1773 lines
54 KiB
Rust
//! Status Codes
|
||
use std::fmt;
|
||
use std::num::{FromPrimitive, ToPrimitive};
|
||
use std::mem::transmute;
|
||
|
||
use std::cmp::Ordering::{self, Less, Equal, Greater};
|
||
|
||
// shamelessly lifted from Teepee. I tried a few schemes, this really
|
||
// does seem like the best.
|
||
|
||
/// An HTTP status code (`Status-Code` in RFC 2616).
|
||
///
|
||
/// This enum is absolutely exhaustive, covering all 500 possible values (100–599).
|
||
///
|
||
/// For HTTP/2.0, statuses belonging to the 1xx Informational class are invalid.
|
||
///
|
||
/// As this is a C‐style enum with each variant having a corresponding value, you may use the likes
|
||
/// of `Continue as u16` to retreive the value `100u16`. Normally, though, you should not need to do
|
||
/// any such thing; just use the status code as a `StatusCode`.
|
||
///
|
||
/// If you encounter a status code that you do not know how to deal with, you should treat it as the
|
||
/// `x00` status code—e.g. for code 123, treat it as 100 (Continue). This can be achieved with
|
||
/// `self.class().default_code()`:
|
||
///
|
||
/// ```rust
|
||
/// # use hyper::status::StatusCode::{Code123, Continue};
|
||
/// assert_eq!(Code123.class().default_code(), Continue);
|
||
/// ```
|
||
#[derive(Show)]
|
||
pub enum StatusCode {
|
||
/// 100 Continue
|
||
Continue = 100,
|
||
/// 101 Switching Protocols
|
||
SwitchingProtocols = 101,
|
||
/// 102 Processing
|
||
Processing = 102,
|
||
/// 103 (unregistered)
|
||
Code103 = 103,
|
||
/// 104 (unregistered)
|
||
Code104 = 104,
|
||
/// 105 (unregistered)
|
||
Code105 = 105,
|
||
/// 106 (unregistered)
|
||
Code106 = 106,
|
||
/// 107 (unregistered)
|
||
Code107 = 107,
|
||
/// 108 (unregistered)
|
||
Code108 = 108,
|
||
/// 109 (unregistered)
|
||
Code109 = 109,
|
||
/// 110 (unregistered)
|
||
Code110 = 110,
|
||
/// 111 (unregistered)
|
||
Code111 = 111,
|
||
/// 112 (unregistered)
|
||
Code112 = 112,
|
||
/// 113 (unregistered)
|
||
Code113 = 113,
|
||
/// 114 (unregistered)
|
||
Code114 = 114,
|
||
/// 115 (unregistered)
|
||
Code115 = 115,
|
||
/// 116 (unregistered)
|
||
Code116 = 116,
|
||
/// 117 (unregistered)
|
||
Code117 = 117,
|
||
/// 118 (unregistered)
|
||
Code118 = 118,
|
||
/// 119 (unregistered)
|
||
Code119 = 119,
|
||
/// 120 (unregistered)
|
||
Code120 = 120,
|
||
/// 121 (unregistered)
|
||
Code121 = 121,
|
||
/// 122 (unregistered)
|
||
Code122 = 122,
|
||
/// 123 (unregistered)
|
||
Code123 = 123,
|
||
/// 124 (unregistered)
|
||
Code124 = 124,
|
||
/// 125 (unregistered)
|
||
Code125 = 125,
|
||
/// 126 (unregistered)
|
||
Code126 = 126,
|
||
/// 127 (unregistered)
|
||
Code127 = 127,
|
||
/// 128 (unregistered)
|
||
Code128 = 128,
|
||
/// 129 (unregistered)
|
||
Code129 = 129,
|
||
/// 130 (unregistered)
|
||
Code130 = 130,
|
||
/// 131 (unregistered)
|
||
Code131 = 131,
|
||
/// 132 (unregistered)
|
||
Code132 = 132,
|
||
/// 133 (unregistered)
|
||
Code133 = 133,
|
||
/// 134 (unregistered)
|
||
Code134 = 134,
|
||
/// 135 (unregistered)
|
||
Code135 = 135,
|
||
/// 136 (unregistered)
|
||
Code136 = 136,
|
||
/// 137 (unregistered)
|
||
Code137 = 137,
|
||
/// 138 (unregistered)
|
||
Code138 = 138,
|
||
/// 139 (unregistered)
|
||
Code139 = 139,
|
||
/// 140 (unregistered)
|
||
Code140 = 140,
|
||
/// 141 (unregistered)
|
||
Code141 = 141,
|
||
/// 142 (unregistered)
|
||
Code142 = 142,
|
||
/// 143 (unregistered)
|
||
Code143 = 143,
|
||
/// 144 (unregistered)
|
||
Code144 = 144,
|
||
/// 145 (unregistered)
|
||
Code145 = 145,
|
||
/// 146 (unregistered)
|
||
Code146 = 146,
|
||
/// 147 (unregistered)
|
||
Code147 = 147,
|
||
/// 148 (unregistered)
|
||
Code148 = 148,
|
||
/// 149 (unregistered)
|
||
Code149 = 149,
|
||
/// 150 (unregistered)
|
||
Code150 = 150,
|
||
/// 151 (unregistered)
|
||
Code151 = 151,
|
||
/// 152 (unregistered)
|
||
Code152 = 152,
|
||
/// 153 (unregistered)
|
||
Code153 = 153,
|
||
/// 154 (unregistered)
|
||
Code154 = 154,
|
||
/// 155 (unregistered)
|
||
Code155 = 155,
|
||
/// 156 (unregistered)
|
||
Code156 = 156,
|
||
/// 157 (unregistered)
|
||
Code157 = 157,
|
||
/// 158 (unregistered)
|
||
Code158 = 158,
|
||
/// 159 (unregistered)
|
||
Code159 = 159,
|
||
/// 160 (unregistered)
|
||
Code160 = 160,
|
||
/// 161 (unregistered)
|
||
Code161 = 161,
|
||
/// 162 (unregistered)
|
||
Code162 = 162,
|
||
/// 163 (unregistered)
|
||
Code163 = 163,
|
||
/// 164 (unregistered)
|
||
Code164 = 164,
|
||
/// 165 (unregistered)
|
||
Code165 = 165,
|
||
/// 166 (unregistered)
|
||
Code166 = 166,
|
||
/// 167 (unregistered)
|
||
Code167 = 167,
|
||
/// 168 (unregistered)
|
||
Code168 = 168,
|
||
/// 169 (unregistered)
|
||
Code169 = 169,
|
||
/// 170 (unregistered)
|
||
Code170 = 170,
|
||
/// 171 (unregistered)
|
||
Code171 = 171,
|
||
/// 172 (unregistered)
|
||
Code172 = 172,
|
||
/// 173 (unregistered)
|
||
Code173 = 173,
|
||
/// 174 (unregistered)
|
||
Code174 = 174,
|
||
/// 175 (unregistered)
|
||
Code175 = 175,
|
||
/// 176 (unregistered)
|
||
Code176 = 176,
|
||
/// 177 (unregistered)
|
||
Code177 = 177,
|
||
/// 178 (unregistered)
|
||
Code178 = 178,
|
||
/// 179 (unregistered)
|
||
Code179 = 179,
|
||
/// 180 (unregistered)
|
||
Code180 = 180,
|
||
/// 181 (unregistered)
|
||
Code181 = 181,
|
||
/// 182 (unregistered)
|
||
Code182 = 182,
|
||
/// 183 (unregistered)
|
||
Code183 = 183,
|
||
/// 184 (unregistered)
|
||
Code184 = 184,
|
||
/// 185 (unregistered)
|
||
Code185 = 185,
|
||
/// 186 (unregistered)
|
||
Code186 = 186,
|
||
/// 187 (unregistered)
|
||
Code187 = 187,
|
||
/// 188 (unregistered)
|
||
Code188 = 188,
|
||
/// 189 (unregistered)
|
||
Code189 = 189,
|
||
/// 190 (unregistered)
|
||
Code190 = 190,
|
||
/// 191 (unregistered)
|
||
Code191 = 191,
|
||
/// 192 (unregistered)
|
||
Code192 = 192,
|
||
/// 193 (unregistered)
|
||
Code193 = 193,
|
||
/// 194 (unregistered)
|
||
Code194 = 194,
|
||
/// 195 (unregistered)
|
||
Code195 = 195,
|
||
/// 196 (unregistered)
|
||
Code196 = 196,
|
||
/// 197 (unregistered)
|
||
Code197 = 197,
|
||
/// 198 (unregistered)
|
||
Code198 = 198,
|
||
/// 199 (unregistered)
|
||
Code199 = 199,
|
||
|
||
/// 200 OK
|
||
Ok = 200,
|
||
/// 201 Created
|
||
Created = 201,
|
||
/// 202 Accepted
|
||
Accepted = 202,
|
||
/// 203 Non-Authoritative Information
|
||
NonAuthoritativeInformation = 203,
|
||
/// 204 No Content
|
||
NoContent = 204,
|
||
/// 205 Reset Content
|
||
ResetContent = 205,
|
||
/// 206 Partial Content
|
||
PartialContent = 206,
|
||
/// 207 Multi-Status
|
||
MultiStatus = 207,
|
||
/// 208 Already Reported
|
||
AlreadyReported = 208,
|
||
/// 209 (unregistered)
|
||
Code209 = 209,
|
||
/// 210 (unregistered)
|
||
Code210 = 210,
|
||
/// 211 (unregistered)
|
||
Code211 = 211,
|
||
/// 212 (unregistered)
|
||
Code212 = 212,
|
||
/// 213 (unregistered)
|
||
Code213 = 213,
|
||
/// 214 (unregistered)
|
||
Code214 = 214,
|
||
/// 215 (unregistered)
|
||
Code215 = 215,
|
||
/// 216 (unregistered)
|
||
Code216 = 216,
|
||
/// 217 (unregistered)
|
||
Code217 = 217,
|
||
/// 218 (unregistered)
|
||
Code218 = 218,
|
||
/// 219 (unregistered)
|
||
Code219 = 219,
|
||
/// 220 (unregistered)
|
||
Code220 = 220,
|
||
/// 221 (unregistered)
|
||
Code221 = 221,
|
||
/// 222 (unregistered)
|
||
Code222 = 222,
|
||
/// 223 (unregistered)
|
||
Code223 = 223,
|
||
/// 224 (unregistered)
|
||
Code224 = 224,
|
||
/// 225 (unregistered)
|
||
Code225 = 225,
|
||
/// 226 IM Used
|
||
ImUsed = 226,
|
||
/// 227 (unregistered)
|
||
Code227 = 227,
|
||
/// 228 (unregistered)
|
||
Code228 = 228,
|
||
/// 229 (unregistered)
|
||
Code229 = 229,
|
||
/// 230 (unregistered)
|
||
Code230 = 230,
|
||
/// 231 (unregistered)
|
||
Code231 = 231,
|
||
/// 232 (unregistered)
|
||
Code232 = 232,
|
||
/// 233 (unregistered)
|
||
Code233 = 233,
|
||
/// 234 (unregistered)
|
||
Code234 = 234,
|
||
/// 235 (unregistered)
|
||
Code235 = 235,
|
||
/// 236 (unregistered)
|
||
Code236 = 236,
|
||
/// 237 (unregistered)
|
||
Code237 = 237,
|
||
/// 238 (unregistered)
|
||
Code238 = 238,
|
||
/// 239 (unregistered)
|
||
Code239 = 239,
|
||
/// 240 (unregistered)
|
||
Code240 = 240,
|
||
/// 241 (unregistered)
|
||
Code241 = 241,
|
||
/// 242 (unregistered)
|
||
Code242 = 242,
|
||
/// 243 (unregistered)
|
||
Code243 = 243,
|
||
/// 244 (unregistered)
|
||
Code244 = 244,
|
||
/// 245 (unregistered)
|
||
Code245 = 245,
|
||
/// 246 (unregistered)
|
||
Code246 = 246,
|
||
/// 247 (unregistered)
|
||
Code247 = 247,
|
||
/// 248 (unregistered)
|
||
Code248 = 248,
|
||
/// 249 (unregistered)
|
||
Code249 = 249,
|
||
/// 250 (unregistered)
|
||
Code250 = 250,
|
||
/// 251 (unregistered)
|
||
Code251 = 251,
|
||
/// 252 (unregistered)
|
||
Code252 = 252,
|
||
/// 253 (unregistered)
|
||
Code253 = 253,
|
||
/// 254 (unregistered)
|
||
Code254 = 254,
|
||
/// 255 (unregistered)
|
||
Code255 = 255,
|
||
/// 256 (unregistered)
|
||
Code256 = 256,
|
||
/// 257 (unregistered)
|
||
Code257 = 257,
|
||
/// 258 (unregistered)
|
||
Code258 = 258,
|
||
/// 259 (unregistered)
|
||
Code259 = 259,
|
||
/// 260 (unregistered)
|
||
Code260 = 260,
|
||
/// 261 (unregistered)
|
||
Code261 = 261,
|
||
/// 262 (unregistered)
|
||
Code262 = 262,
|
||
/// 263 (unregistered)
|
||
Code263 = 263,
|
||
/// 264 (unregistered)
|
||
Code264 = 264,
|
||
/// 265 (unregistered)
|
||
Code265 = 265,
|
||
/// 266 (unregistered)
|
||
Code266 = 266,
|
||
/// 267 (unregistered)
|
||
Code267 = 267,
|
||
/// 268 (unregistered)
|
||
Code268 = 268,
|
||
/// 269 (unregistered)
|
||
Code269 = 269,
|
||
/// 270 (unregistered)
|
||
Code270 = 270,
|
||
/// 271 (unregistered)
|
||
Code271 = 271,
|
||
/// 272 (unregistered)
|
||
Code272 = 272,
|
||
/// 273 (unregistered)
|
||
Code273 = 273,
|
||
/// 274 (unregistered)
|
||
Code274 = 274,
|
||
/// 275 (unregistered)
|
||
Code275 = 275,
|
||
/// 276 (unregistered)
|
||
Code276 = 276,
|
||
/// 277 (unregistered)
|
||
Code277 = 277,
|
||
/// 278 (unregistered)
|
||
Code278 = 278,
|
||
/// 279 (unregistered)
|
||
Code279 = 279,
|
||
/// 280 (unregistered)
|
||
Code280 = 280,
|
||
/// 281 (unregistered)
|
||
Code281 = 281,
|
||
/// 282 (unregistered)
|
||
Code282 = 282,
|
||
/// 283 (unregistered)
|
||
Code283 = 283,
|
||
/// 284 (unregistered)
|
||
Code284 = 284,
|
||
/// 285 (unregistered)
|
||
Code285 = 285,
|
||
/// 286 (unregistered)
|
||
Code286 = 286,
|
||
/// 287 (unregistered)
|
||
Code287 = 287,
|
||
/// 288 (unregistered)
|
||
Code288 = 288,
|
||
/// 289 (unregistered)
|
||
Code289 = 289,
|
||
/// 290 (unregistered)
|
||
Code290 = 290,
|
||
/// 291 (unregistered)
|
||
Code291 = 291,
|
||
/// 292 (unregistered)
|
||
Code292 = 292,
|
||
/// 293 (unregistered)
|
||
Code293 = 293,
|
||
/// 294 (unregistered)
|
||
Code294 = 294,
|
||
/// 295 (unregistered)
|
||
Code295 = 295,
|
||
/// 296 (unregistered)
|
||
Code296 = 296,
|
||
/// 297 (unregistered)
|
||
Code297 = 297,
|
||
/// 298 (unregistered)
|
||
Code298 = 298,
|
||
/// 299 (unregistered)
|
||
Code299 = 299,
|
||
|
||
/// 300 Multiple Choices
|
||
MultipleChoices = 300,
|
||
/// 301 Moved Permanently
|
||
MovedPermanently = 301,
|
||
/// 302 Found
|
||
Found = 302,
|
||
/// 303 See Other
|
||
SeeOther = 303,
|
||
/// 304 Not Modified
|
||
NotModified = 304,
|
||
/// 305 Use Proxy
|
||
UseProxy = 305,
|
||
/// 306 Switch Proxy
|
||
SwitchProxy = 306,
|
||
/// 307 Temporary Redirect
|
||
TemporaryRedirect = 307,
|
||
/// 308 Permanent Redirect
|
||
PermanentRedirect = 308,
|
||
/// 309 (unregistered)
|
||
Code309 = 309,
|
||
/// 310 (unregistered)
|
||
Code310 = 310,
|
||
/// 311 (unregistered)
|
||
Code311 = 311,
|
||
/// 312 (unregistered)
|
||
Code312 = 312,
|
||
/// 313 (unregistered)
|
||
Code313 = 313,
|
||
/// 314 (unregistered)
|
||
Code314 = 314,
|
||
/// 315 (unregistered)
|
||
Code315 = 315,
|
||
/// 316 (unregistered)
|
||
Code316 = 316,
|
||
/// 317 (unregistered)
|
||
Code317 = 317,
|
||
/// 318 (unregistered)
|
||
Code318 = 318,
|
||
/// 319 (unregistered)
|
||
Code319 = 319,
|
||
/// 320 (unregistered)
|
||
Code320 = 320,
|
||
/// 321 (unregistered)
|
||
Code321 = 321,
|
||
/// 322 (unregistered)
|
||
Code322 = 322,
|
||
/// 323 (unregistered)
|
||
Code323 = 323,
|
||
/// 324 (unregistered)
|
||
Code324 = 324,
|
||
/// 325 (unregistered)
|
||
Code325 = 325,
|
||
/// 326 (unregistered)
|
||
Code326 = 326,
|
||
/// 327 (unregistered)
|
||
Code327 = 327,
|
||
/// 328 (unregistered)
|
||
Code328 = 328,
|
||
/// 329 (unregistered)
|
||
Code329 = 329,
|
||
/// 330 (unregistered)
|
||
Code330 = 330,
|
||
/// 331 (unregistered)
|
||
Code331 = 331,
|
||
/// 332 (unregistered)
|
||
Code332 = 332,
|
||
/// 333 (unregistered)
|
||
Code333 = 333,
|
||
/// 334 (unregistered)
|
||
Code334 = 334,
|
||
/// 335 (unregistered)
|
||
Code335 = 335,
|
||
/// 336 (unregistered)
|
||
Code336 = 336,
|
||
/// 337 (unregistered)
|
||
Code337 = 337,
|
||
/// 338 (unregistered)
|
||
Code338 = 338,
|
||
/// 339 (unregistered)
|
||
Code339 = 339,
|
||
/// 340 (unregistered)
|
||
Code340 = 340,
|
||
/// 341 (unregistered)
|
||
Code341 = 341,
|
||
/// 342 (unregistered)
|
||
Code342 = 342,
|
||
/// 343 (unregistered)
|
||
Code343 = 343,
|
||
/// 344 (unregistered)
|
||
Code344 = 344,
|
||
/// 345 (unregistered)
|
||
Code345 = 345,
|
||
/// 346 (unregistered)
|
||
Code346 = 346,
|
||
/// 347 (unregistered)
|
||
Code347 = 347,
|
||
/// 348 (unregistered)
|
||
Code348 = 348,
|
||
/// 349 (unregistered)
|
||
Code349 = 349,
|
||
/// 350 (unregistered)
|
||
Code350 = 350,
|
||
/// 351 (unregistered)
|
||
Code351 = 351,
|
||
/// 352 (unregistered)
|
||
Code352 = 352,
|
||
/// 353 (unregistered)
|
||
Code353 = 353,
|
||
/// 354 (unregistered)
|
||
Code354 = 354,
|
||
/// 355 (unregistered)
|
||
Code355 = 355,
|
||
/// 356 (unregistered)
|
||
Code356 = 356,
|
||
/// 357 (unregistered)
|
||
Code357 = 357,
|
||
/// 358 (unregistered)
|
||
Code358 = 358,
|
||
/// 359 (unregistered)
|
||
Code359 = 359,
|
||
/// 360 (unregistered)
|
||
Code360 = 360,
|
||
/// 361 (unregistered)
|
||
Code361 = 361,
|
||
/// 362 (unregistered)
|
||
Code362 = 362,
|
||
/// 363 (unregistered)
|
||
Code363 = 363,
|
||
/// 364 (unregistered)
|
||
Code364 = 364,
|
||
/// 365 (unregistered)
|
||
Code365 = 365,
|
||
/// 366 (unregistered)
|
||
Code366 = 366,
|
||
/// 367 (unregistered)
|
||
Code367 = 367,
|
||
/// 368 (unregistered)
|
||
Code368 = 368,
|
||
/// 369 (unregistered)
|
||
Code369 = 369,
|
||
/// 370 (unregistered)
|
||
Code370 = 370,
|
||
/// 371 (unregistered)
|
||
Code371 = 371,
|
||
/// 372 (unregistered)
|
||
Code372 = 372,
|
||
/// 373 (unregistered)
|
||
Code373 = 373,
|
||
/// 374 (unregistered)
|
||
Code374 = 374,
|
||
/// 375 (unregistered)
|
||
Code375 = 375,
|
||
/// 376 (unregistered)
|
||
Code376 = 376,
|
||
/// 377 (unregistered)
|
||
Code377 = 377,
|
||
/// 378 (unregistered)
|
||
Code378 = 378,
|
||
/// 379 (unregistered)
|
||
Code379 = 379,
|
||
/// 380 (unregistered)
|
||
Code380 = 380,
|
||
/// 381 (unregistered)
|
||
Code381 = 381,
|
||
/// 382 (unregistered)
|
||
Code382 = 382,
|
||
/// 383 (unregistered)
|
||
Code383 = 383,
|
||
/// 384 (unregistered)
|
||
Code384 = 384,
|
||
/// 385 (unregistered)
|
||
Code385 = 385,
|
||
/// 386 (unregistered)
|
||
Code386 = 386,
|
||
/// 387 (unregistered)
|
||
Code387 = 387,
|
||
/// 388 (unregistered)
|
||
Code388 = 388,
|
||
/// 389 (unregistered)
|
||
Code389 = 389,
|
||
/// 390 (unregistered)
|
||
Code390 = 390,
|
||
/// 391 (unregistered)
|
||
Code391 = 391,
|
||
/// 392 (unregistered)
|
||
Code392 = 392,
|
||
/// 393 (unregistered)
|
||
Code393 = 393,
|
||
/// 394 (unregistered)
|
||
Code394 = 394,
|
||
/// 395 (unregistered)
|
||
Code395 = 395,
|
||
/// 396 (unregistered)
|
||
Code396 = 396,
|
||
/// 397 (unregistered)
|
||
Code397 = 397,
|
||
/// 398 (unregistered)
|
||
Code398 = 398,
|
||
/// 399 (unregistered)
|
||
Code399 = 399,
|
||
|
||
/// 400 Bad Request
|
||
BadRequest = 400,
|
||
/// 401 Unauthorized
|
||
Unauthorized = 401,
|
||
/// 402 Payment Required
|
||
PaymentRequired = 402,
|
||
/// 403 Forbidden
|
||
Forbidden = 403,
|
||
/// 404 Not Found
|
||
NotFound = 404,
|
||
/// 405 Method Not Allowed
|
||
MethodNotAllowed = 405,
|
||
/// 406 Not Acceptable
|
||
NotAcceptable = 406,
|
||
/// 407 Proxy Authentication Required
|
||
ProxyAuthenticationRequired = 407,
|
||
/// 408 Request Timeout
|
||
RequestTimeout = 408,
|
||
/// 409 Conflict
|
||
Conflict = 409,
|
||
/// 410 Gone
|
||
Gone = 410,
|
||
/// 411 Length Required
|
||
LengthRequired = 411,
|
||
/// 412 Precondition Failed
|
||
PreconditionFailed = 412,
|
||
/// 413 Request Entity Too Large
|
||
RequestEntityTooLarge = 413,
|
||
/// 414 Request-URI Too Long
|
||
RequestUriTooLong = 414,
|
||
/// 415 Unsupported Media Type
|
||
UnsupportedMediaType = 415,
|
||
/// 416 Requested Range Not Satisfiable
|
||
RequestedRangeNotSatisfiable = 416,
|
||
/// 417 Expectation Failed
|
||
ExpectationFailed = 417,
|
||
/// 418 I'm a teapot
|
||
ImATeapot = 418,
|
||
/// 419 Authentication Timeout
|
||
AuthenticationTimeout = 419,
|
||
/// 420 (unregistered)
|
||
Code420 = 420,
|
||
/// 421 (unregistered)
|
||
Code421 = 421,
|
||
/// 422 Unprocessable Entity
|
||
UnprocessableEntity = 422,
|
||
/// 423 Locked
|
||
Locked = 423,
|
||
/// 424 Failed Dependency
|
||
FailedDependency = 424,
|
||
/// 425 Unordered Collection
|
||
UnorderedCollection = 425,
|
||
/// 426 Upgrade Required
|
||
UpgradeRequired = 426,
|
||
/// 427 (unregistered)
|
||
Code427 = 427,
|
||
/// 428 Precondition Required
|
||
PreconditionRequired = 428,
|
||
/// 429 Too Many Requests
|
||
TooManyRequests = 429,
|
||
/// 430 (unregistered)
|
||
Code430 = 430,
|
||
/// 431 Request Header Fields Too Large
|
||
RequestHeaderFieldsTooLarge = 431,
|
||
/// 432 (unregistered)
|
||
Code432 = 432,
|
||
/// 433 (unregistered)
|
||
Code433 = 433,
|
||
/// 434 (unregistered)
|
||
Code434 = 434,
|
||
/// 435 (unregistered)
|
||
Code435 = 435,
|
||
/// 436 (unregistered)
|
||
Code436 = 436,
|
||
/// 437 (unregistered)
|
||
Code437 = 437,
|
||
/// 438 (unregistered)
|
||
Code438 = 438,
|
||
/// 439 (unregistered)
|
||
Code439 = 439,
|
||
/// 440 (unregistered)
|
||
Code440 = 440,
|
||
/// 441 (unregistered)
|
||
Code441 = 441,
|
||
/// 442 (unregistered)
|
||
Code442 = 442,
|
||
/// 443 (unregistered)
|
||
Code443 = 443,
|
||
/// 444 (unregistered)
|
||
Code444 = 444,
|
||
/// 445 (unregistered)
|
||
Code445 = 445,
|
||
/// 446 (unregistered)
|
||
Code446 = 446,
|
||
/// 447 (unregistered)
|
||
Code447 = 447,
|
||
/// 448 (unregistered)
|
||
Code448 = 448,
|
||
/// 449 (unregistered)
|
||
Code449 = 449,
|
||
/// 450 (unregistered)
|
||
Code450 = 450,
|
||
/// 451 Unavailable For Legal Reasons
|
||
UnavailableForLegalReasons = 451,
|
||
/// 452 (unregistered)
|
||
Code452 = 452,
|
||
/// 453 (unregistered)
|
||
Code453 = 453,
|
||
/// 454 (unregistered)
|
||
Code454 = 454,
|
||
/// 455 (unregistered)
|
||
Code455 = 455,
|
||
/// 456 (unregistered)
|
||
Code456 = 456,
|
||
/// 457 (unregistered)
|
||
Code457 = 457,
|
||
/// 458 (unregistered)
|
||
Code458 = 458,
|
||
/// 459 (unregistered)
|
||
Code459 = 459,
|
||
/// 460 (unregistered)
|
||
Code460 = 460,
|
||
/// 461 (unregistered)
|
||
Code461 = 461,
|
||
/// 462 (unregistered)
|
||
Code462 = 462,
|
||
/// 463 (unregistered)
|
||
Code463 = 463,
|
||
/// 464 (unregistered)
|
||
Code464 = 464,
|
||
/// 465 (unregistered)
|
||
Code465 = 465,
|
||
/// 466 (unregistered)
|
||
Code466 = 466,
|
||
/// 467 (unregistered)
|
||
Code467 = 467,
|
||
/// 468 (unregistered)
|
||
Code468 = 468,
|
||
/// 469 (unregistered)
|
||
Code469 = 469,
|
||
/// 470 (unregistered)
|
||
Code470 = 470,
|
||
/// 471 (unregistered)
|
||
Code471 = 471,
|
||
/// 472 (unregistered)
|
||
Code472 = 472,
|
||
/// 473 (unregistered)
|
||
Code473 = 473,
|
||
/// 474 (unregistered)
|
||
Code474 = 474,
|
||
/// 475 (unregistered)
|
||
Code475 = 475,
|
||
/// 476 (unregistered)
|
||
Code476 = 476,
|
||
/// 477 (unregistered)
|
||
Code477 = 477,
|
||
/// 478 (unregistered)
|
||
Code478 = 478,
|
||
/// 479 (unregistered)
|
||
Code479 = 479,
|
||
/// 480 (unregistered)
|
||
Code480 = 480,
|
||
/// 481 (unregistered)
|
||
Code481 = 481,
|
||
/// 482 (unregistered)
|
||
Code482 = 482,
|
||
/// 483 (unregistered)
|
||
Code483 = 483,
|
||
/// 484 (unregistered)
|
||
Code484 = 484,
|
||
/// 485 (unregistered)
|
||
Code485 = 485,
|
||
/// 486 (unregistered)
|
||
Code486 = 486,
|
||
/// 487 (unregistered)
|
||
Code487 = 487,
|
||
/// 488 (unregistered)
|
||
Code488 = 488,
|
||
/// 489 (unregistered)
|
||
Code489 = 489,
|
||
/// 490 (unregistered)
|
||
Code490 = 490,
|
||
/// 491 (unregistered)
|
||
Code491 = 491,
|
||
/// 492 (unregistered)
|
||
Code492 = 492,
|
||
/// 493 (unregistered)
|
||
Code493 = 493,
|
||
/// 494 (unregistered)
|
||
Code494 = 494,
|
||
/// 495 (unregistered)
|
||
Code495 = 495,
|
||
/// 496 (unregistered)
|
||
Code496 = 496,
|
||
/// 497 (unregistered)
|
||
Code497 = 497,
|
||
/// 498 (unregistered)
|
||
Code498 = 498,
|
||
/// 499 (unregistered)
|
||
Code499 = 499,
|
||
|
||
/// 500 Internal Server Error
|
||
InternalServerError = 500,
|
||
/// 501 Not Implemented
|
||
NotImplemented = 501,
|
||
/// 502 Bad Gateway
|
||
BadGateway = 502,
|
||
/// 503 Service Unavailable
|
||
ServiceUnavailable = 503,
|
||
/// 504 Gateway Timeout
|
||
GatewayTimeout = 504,
|
||
/// 505 HTTP Version Not Supported
|
||
HttpVersionNotSupported = 505,
|
||
/// 506 Variant Also Negotiates
|
||
VariantAlsoNegotiates = 506,
|
||
/// 507 Insufficient Storage
|
||
InsufficientStorage = 507,
|
||
/// 508 Loop Detected
|
||
LoopDetected = 508,
|
||
/// 509 (unregistered)
|
||
Code509 = 509,
|
||
/// 510 Not Extended
|
||
NotExtended = 510,
|
||
/// 511 Network Authentication Required
|
||
NetworkAuthenticationRequired = 511,
|
||
/// 512 (unregistered)
|
||
Code512 = 512,
|
||
/// 513 (unregistered)
|
||
Code513 = 513,
|
||
/// 514 (unregistered)
|
||
Code514 = 514,
|
||
/// 515 (unregistered)
|
||
Code515 = 515,
|
||
/// 516 (unregistered)
|
||
Code516 = 516,
|
||
/// 517 (unregistered)
|
||
Code517 = 517,
|
||
/// 518 (unregistered)
|
||
Code518 = 518,
|
||
/// 519 (unregistered)
|
||
Code519 = 519,
|
||
/// 520 (unregistered)
|
||
Code520 = 520,
|
||
/// 521 (unregistered)
|
||
Code521 = 521,
|
||
/// 522 (unregistered)
|
||
Code522 = 522,
|
||
/// 523 (unregistered)
|
||
Code523 = 523,
|
||
/// 524 (unregistered)
|
||
Code524 = 524,
|
||
/// 525 (unregistered)
|
||
Code525 = 525,
|
||
/// 526 (unregistered)
|
||
Code526 = 526,
|
||
/// 527 (unregistered)
|
||
Code527 = 527,
|
||
/// 528 (unregistered)
|
||
Code528 = 528,
|
||
/// 529 (unregistered)
|
||
Code529 = 529,
|
||
/// 530 (unregistered)
|
||
Code530 = 530,
|
||
/// 531 (unregistered)
|
||
Code531 = 531,
|
||
/// 532 (unregistered)
|
||
Code532 = 532,
|
||
/// 533 (unregistered)
|
||
Code533 = 533,
|
||
/// 534 (unregistered)
|
||
Code534 = 534,
|
||
/// 535 (unregistered)
|
||
Code535 = 535,
|
||
/// 536 (unregistered)
|
||
Code536 = 536,
|
||
/// 537 (unregistered)
|
||
Code537 = 537,
|
||
/// 538 (unregistered)
|
||
Code538 = 538,
|
||
/// 539 (unregistered)
|
||
Code539 = 539,
|
||
/// 540 (unregistered)
|
||
Code540 = 540,
|
||
/// 541 (unregistered)
|
||
Code541 = 541,
|
||
/// 542 (unregistered)
|
||
Code542 = 542,
|
||
/// 543 (unregistered)
|
||
Code543 = 543,
|
||
/// 544 (unregistered)
|
||
Code544 = 544,
|
||
/// 545 (unregistered)
|
||
Code545 = 545,
|
||
/// 546 (unregistered)
|
||
Code546 = 546,
|
||
/// 547 (unregistered)
|
||
Code547 = 547,
|
||
/// 548 (unregistered)
|
||
Code548 = 548,
|
||
/// 549 (unregistered)
|
||
Code549 = 549,
|
||
/// 550 (unregistered)
|
||
Code550 = 550,
|
||
/// 551 (unregistered)
|
||
Code551 = 551,
|
||
/// 552 (unregistered)
|
||
Code552 = 552,
|
||
/// 553 (unregistered)
|
||
Code553 = 553,
|
||
/// 554 (unregistered)
|
||
Code554 = 554,
|
||
/// 555 (unregistered)
|
||
Code555 = 555,
|
||
/// 556 (unregistered)
|
||
Code556 = 556,
|
||
/// 557 (unregistered)
|
||
Code557 = 557,
|
||
/// 558 (unregistered)
|
||
Code558 = 558,
|
||
/// 559 (unregistered)
|
||
Code559 = 559,
|
||
/// 560 (unregistered)
|
||
Code560 = 560,
|
||
/// 561 (unregistered)
|
||
Code561 = 561,
|
||
/// 562 (unregistered)
|
||
Code562 = 562,
|
||
/// 563 (unregistered)
|
||
Code563 = 563,
|
||
/// 564 (unregistered)
|
||
Code564 = 564,
|
||
/// 565 (unregistered)
|
||
Code565 = 565,
|
||
/// 566 (unregistered)
|
||
Code566 = 566,
|
||
/// 567 (unregistered)
|
||
Code567 = 567,
|
||
/// 568 (unregistered)
|
||
Code568 = 568,
|
||
/// 569 (unregistered)
|
||
Code569 = 569,
|
||
/// 570 (unregistered)
|
||
Code570 = 570,
|
||
/// 571 (unregistered)
|
||
Code571 = 571,
|
||
/// 572 (unregistered)
|
||
Code572 = 572,
|
||
/// 573 (unregistered)
|
||
Code573 = 573,
|
||
/// 574 (unregistered)
|
||
Code574 = 574,
|
||
/// 575 (unregistered)
|
||
Code575 = 575,
|
||
/// 576 (unregistered)
|
||
Code576 = 576,
|
||
/// 577 (unregistered)
|
||
Code577 = 577,
|
||
/// 578 (unregistered)
|
||
Code578 = 578,
|
||
/// 579 (unregistered)
|
||
Code579 = 579,
|
||
/// 580 (unregistered)
|
||
Code580 = 580,
|
||
/// 581 (unregistered)
|
||
Code581 = 581,
|
||
/// 582 (unregistered)
|
||
Code582 = 582,
|
||
/// 583 (unregistered)
|
||
Code583 = 583,
|
||
/// 584 (unregistered)
|
||
Code584 = 584,
|
||
/// 585 (unregistered)
|
||
Code585 = 585,
|
||
/// 586 (unregistered)
|
||
Code586 = 586,
|
||
/// 587 (unregistered)
|
||
Code587 = 587,
|
||
/// 588 (unregistered)
|
||
Code588 = 588,
|
||
/// 589 (unregistered)
|
||
Code589 = 589,
|
||
/// 590 (unregistered)
|
||
Code590 = 590,
|
||
/// 591 (unregistered)
|
||
Code591 = 591,
|
||
/// 592 (unregistered)
|
||
Code592 = 592,
|
||
/// 593 (unregistered)
|
||
Code593 = 593,
|
||
/// 594 (unregistered)
|
||
Code594 = 594,
|
||
/// 595 (unregistered)
|
||
Code595 = 595,
|
||
/// 596 (unregistered)
|
||
Code596 = 596,
|
||
/// 597 (unregistered)
|
||
Code597 = 597,
|
||
/// 598 (unregistered)
|
||
Code598 = 598,
|
||
/// 599 (unregistered)
|
||
Code599 = 599,
|
||
}
|
||
|
||
impl StatusCode {
|
||
|
||
/// Get the standardised `Reason-Phrase` for this status code.
|
||
///
|
||
/// This is mostly here for servers writing responses, but could potentially have application at
|
||
/// other times.
|
||
///
|
||
/// The reason phrase is defined as being exclusively for human readers. You should avoid
|
||
/// derive any meaning from it at all costs.
|
||
///
|
||
/// Bear in mind also that in HTTP/2.0 the reason phrase is abolished from transmission, and so
|
||
/// this canonical reason phrase really is the only reason phrase you’ll find.
|
||
pub fn canonical_reason(&self) -> Option<&'static str> {
|
||
match *self {
|
||
StatusCode::Continue => Some("Continue"),
|
||
StatusCode::SwitchingProtocols => Some("Switching Protocols"),
|
||
StatusCode::Processing => Some("Processing"),
|
||
StatusCode::Code103 => None,
|
||
StatusCode::Code104 => None,
|
||
StatusCode::Code105 => None,
|
||
StatusCode::Code106 => None,
|
||
StatusCode::Code107 => None,
|
||
StatusCode::Code108 => None,
|
||
StatusCode::Code109 => None,
|
||
StatusCode::Code110 => None,
|
||
StatusCode::Code111 => None,
|
||
StatusCode::Code112 => None,
|
||
StatusCode::Code113 => None,
|
||
StatusCode::Code114 => None,
|
||
StatusCode::Code115 => None,
|
||
StatusCode::Code116 => None,
|
||
StatusCode::Code117 => None,
|
||
StatusCode::Code118 => None,
|
||
StatusCode::Code119 => None,
|
||
StatusCode::Code120 => None,
|
||
StatusCode::Code121 => None,
|
||
StatusCode::Code122 => None,
|
||
StatusCode::Code123 => None,
|
||
StatusCode::Code124 => None,
|
||
StatusCode::Code125 => None,
|
||
StatusCode::Code126 => None,
|
||
StatusCode::Code127 => None,
|
||
StatusCode::Code128 => None,
|
||
StatusCode::Code129 => None,
|
||
StatusCode::Code130 => None,
|
||
StatusCode::Code131 => None,
|
||
StatusCode::Code132 => None,
|
||
StatusCode::Code133 => None,
|
||
StatusCode::Code134 => None,
|
||
StatusCode::Code135 => None,
|
||
StatusCode::Code136 => None,
|
||
StatusCode::Code137 => None,
|
||
StatusCode::Code138 => None,
|
||
StatusCode::Code139 => None,
|
||
StatusCode::Code140 => None,
|
||
StatusCode::Code141 => None,
|
||
StatusCode::Code142 => None,
|
||
StatusCode::Code143 => None,
|
||
StatusCode::Code144 => None,
|
||
StatusCode::Code145 => None,
|
||
StatusCode::Code146 => None,
|
||
StatusCode::Code147 => None,
|
||
StatusCode::Code148 => None,
|
||
StatusCode::Code149 => None,
|
||
StatusCode::Code150 => None,
|
||
StatusCode::Code151 => None,
|
||
StatusCode::Code152 => None,
|
||
StatusCode::Code153 => None,
|
||
StatusCode::Code154 => None,
|
||
StatusCode::Code155 => None,
|
||
StatusCode::Code156 => None,
|
||
StatusCode::Code157 => None,
|
||
StatusCode::Code158 => None,
|
||
StatusCode::Code159 => None,
|
||
StatusCode::Code160 => None,
|
||
StatusCode::Code161 => None,
|
||
StatusCode::Code162 => None,
|
||
StatusCode::Code163 => None,
|
||
StatusCode::Code164 => None,
|
||
StatusCode::Code165 => None,
|
||
StatusCode::Code166 => None,
|
||
StatusCode::Code167 => None,
|
||
StatusCode::Code168 => None,
|
||
StatusCode::Code169 => None,
|
||
StatusCode::Code170 => None,
|
||
StatusCode::Code171 => None,
|
||
StatusCode::Code172 => None,
|
||
StatusCode::Code173 => None,
|
||
StatusCode::Code174 => None,
|
||
StatusCode::Code175 => None,
|
||
StatusCode::Code176 => None,
|
||
StatusCode::Code177 => None,
|
||
StatusCode::Code178 => None,
|
||
StatusCode::Code179 => None,
|
||
StatusCode::Code180 => None,
|
||
StatusCode::Code181 => None,
|
||
StatusCode::Code182 => None,
|
||
StatusCode::Code183 => None,
|
||
StatusCode::Code184 => None,
|
||
StatusCode::Code185 => None,
|
||
StatusCode::Code186 => None,
|
||
StatusCode::Code187 => None,
|
||
StatusCode::Code188 => None,
|
||
StatusCode::Code189 => None,
|
||
StatusCode::Code190 => None,
|
||
StatusCode::Code191 => None,
|
||
StatusCode::Code192 => None,
|
||
StatusCode::Code193 => None,
|
||
StatusCode::Code194 => None,
|
||
StatusCode::Code195 => None,
|
||
StatusCode::Code196 => None,
|
||
StatusCode::Code197 => None,
|
||
StatusCode::Code198 => None,
|
||
StatusCode::Code199 => None,
|
||
|
||
StatusCode::Ok => Some("OK"),
|
||
StatusCode::Created => Some("Created"),
|
||
StatusCode::Accepted => Some("Accepted"),
|
||
StatusCode::NonAuthoritativeInformation => Some("Non-Authoritative Information"),
|
||
StatusCode::NoContent => Some("No Content"),
|
||
StatusCode::ResetContent => Some("Reset Content"),
|
||
StatusCode::PartialContent => Some("Partial Content"),
|
||
StatusCode::MultiStatus => Some("Multi-Status"),
|
||
StatusCode::AlreadyReported => Some("Already Reported"),
|
||
StatusCode::Code209 => None,
|
||
StatusCode::Code210 => None,
|
||
StatusCode::Code211 => None,
|
||
StatusCode::Code212 => None,
|
||
StatusCode::Code213 => None,
|
||
StatusCode::Code214 => None,
|
||
StatusCode::Code215 => None,
|
||
StatusCode::Code216 => None,
|
||
StatusCode::Code217 => None,
|
||
StatusCode::Code218 => None,
|
||
StatusCode::Code219 => None,
|
||
StatusCode::Code220 => None,
|
||
StatusCode::Code221 => None,
|
||
StatusCode::Code222 => None,
|
||
StatusCode::Code223 => None,
|
||
StatusCode::Code224 => None,
|
||
StatusCode::Code225 => None,
|
||
StatusCode::ImUsed => Some("IM Used"),
|
||
StatusCode::Code227 => None,
|
||
StatusCode::Code228 => None,
|
||
StatusCode::Code229 => None,
|
||
StatusCode::Code230 => None,
|
||
StatusCode::Code231 => None,
|
||
StatusCode::Code232 => None,
|
||
StatusCode::Code233 => None,
|
||
StatusCode::Code234 => None,
|
||
StatusCode::Code235 => None,
|
||
StatusCode::Code236 => None,
|
||
StatusCode::Code237 => None,
|
||
StatusCode::Code238 => None,
|
||
StatusCode::Code239 => None,
|
||
StatusCode::Code240 => None,
|
||
StatusCode::Code241 => None,
|
||
StatusCode::Code242 => None,
|
||
StatusCode::Code243 => None,
|
||
StatusCode::Code244 => None,
|
||
StatusCode::Code245 => None,
|
||
StatusCode::Code246 => None,
|
||
StatusCode::Code247 => None,
|
||
StatusCode::Code248 => None,
|
||
StatusCode::Code249 => None,
|
||
StatusCode::Code250 => None,
|
||
StatusCode::Code251 => None,
|
||
StatusCode::Code252 => None,
|
||
StatusCode::Code253 => None,
|
||
StatusCode::Code254 => None,
|
||
StatusCode::Code255 => None,
|
||
StatusCode::Code256 => None,
|
||
StatusCode::Code257 => None,
|
||
StatusCode::Code258 => None,
|
||
StatusCode::Code259 => None,
|
||
StatusCode::Code260 => None,
|
||
StatusCode::Code261 => None,
|
||
StatusCode::Code262 => None,
|
||
StatusCode::Code263 => None,
|
||
StatusCode::Code264 => None,
|
||
StatusCode::Code265 => None,
|
||
StatusCode::Code266 => None,
|
||
StatusCode::Code267 => None,
|
||
StatusCode::Code268 => None,
|
||
StatusCode::Code269 => None,
|
||
StatusCode::Code270 => None,
|
||
StatusCode::Code271 => None,
|
||
StatusCode::Code272 => None,
|
||
StatusCode::Code273 => None,
|
||
StatusCode::Code274 => None,
|
||
StatusCode::Code275 => None,
|
||
StatusCode::Code276 => None,
|
||
StatusCode::Code277 => None,
|
||
StatusCode::Code278 => None,
|
||
StatusCode::Code279 => None,
|
||
StatusCode::Code280 => None,
|
||
StatusCode::Code281 => None,
|
||
StatusCode::Code282 => None,
|
||
StatusCode::Code283 => None,
|
||
StatusCode::Code284 => None,
|
||
StatusCode::Code285 => None,
|
||
StatusCode::Code286 => None,
|
||
StatusCode::Code287 => None,
|
||
StatusCode::Code288 => None,
|
||
StatusCode::Code289 => None,
|
||
StatusCode::Code290 => None,
|
||
StatusCode::Code291 => None,
|
||
StatusCode::Code292 => None,
|
||
StatusCode::Code293 => None,
|
||
StatusCode::Code294 => None,
|
||
StatusCode::Code295 => None,
|
||
StatusCode::Code296 => None,
|
||
StatusCode::Code297 => None,
|
||
StatusCode::Code298 => None,
|
||
StatusCode::Code299 => None,
|
||
|
||
StatusCode::MultipleChoices => Some("Multiple Choices"),
|
||
StatusCode::MovedPermanently => Some("Moved Permanently"),
|
||
StatusCode::Found => Some("Found"),
|
||
StatusCode::SeeOther => Some("See Other"),
|
||
StatusCode::NotModified => Some("Not Modified"),
|
||
StatusCode::UseProxy => Some("Use Proxy"),
|
||
StatusCode::SwitchProxy => Some("Switch Proxy"),
|
||
StatusCode::TemporaryRedirect => Some("Temporary Redirect"),
|
||
StatusCode::PermanentRedirect => Some("Permanent Redirect"),
|
||
StatusCode::Code309 => None,
|
||
StatusCode::Code310 => None,
|
||
StatusCode::Code311 => None,
|
||
StatusCode::Code312 => None,
|
||
StatusCode::Code313 => None,
|
||
StatusCode::Code314 => None,
|
||
StatusCode::Code315 => None,
|
||
StatusCode::Code316 => None,
|
||
StatusCode::Code317 => None,
|
||
StatusCode::Code318 => None,
|
||
StatusCode::Code319 => None,
|
||
StatusCode::Code320 => None,
|
||
StatusCode::Code321 => None,
|
||
StatusCode::Code322 => None,
|
||
StatusCode::Code323 => None,
|
||
StatusCode::Code324 => None,
|
||
StatusCode::Code325 => None,
|
||
StatusCode::Code326 => None,
|
||
StatusCode::Code327 => None,
|
||
StatusCode::Code328 => None,
|
||
StatusCode::Code329 => None,
|
||
StatusCode::Code330 => None,
|
||
StatusCode::Code331 => None,
|
||
StatusCode::Code332 => None,
|
||
StatusCode::Code333 => None,
|
||
StatusCode::Code334 => None,
|
||
StatusCode::Code335 => None,
|
||
StatusCode::Code336 => None,
|
||
StatusCode::Code337 => None,
|
||
StatusCode::Code338 => None,
|
||
StatusCode::Code339 => None,
|
||
StatusCode::Code340 => None,
|
||
StatusCode::Code341 => None,
|
||
StatusCode::Code342 => None,
|
||
StatusCode::Code343 => None,
|
||
StatusCode::Code344 => None,
|
||
StatusCode::Code345 => None,
|
||
StatusCode::Code346 => None,
|
||
StatusCode::Code347 => None,
|
||
StatusCode::Code348 => None,
|
||
StatusCode::Code349 => None,
|
||
StatusCode::Code350 => None,
|
||
StatusCode::Code351 => None,
|
||
StatusCode::Code352 => None,
|
||
StatusCode::Code353 => None,
|
||
StatusCode::Code354 => None,
|
||
StatusCode::Code355 => None,
|
||
StatusCode::Code356 => None,
|
||
StatusCode::Code357 => None,
|
||
StatusCode::Code358 => None,
|
||
StatusCode::Code359 => None,
|
||
StatusCode::Code360 => None,
|
||
StatusCode::Code361 => None,
|
||
StatusCode::Code362 => None,
|
||
StatusCode::Code363 => None,
|
||
StatusCode::Code364 => None,
|
||
StatusCode::Code365 => None,
|
||
StatusCode::Code366 => None,
|
||
StatusCode::Code367 => None,
|
||
StatusCode::Code368 => None,
|
||
StatusCode::Code369 => None,
|
||
StatusCode::Code370 => None,
|
||
StatusCode::Code371 => None,
|
||
StatusCode::Code372 => None,
|
||
StatusCode::Code373 => None,
|
||
StatusCode::Code374 => None,
|
||
StatusCode::Code375 => None,
|
||
StatusCode::Code376 => None,
|
||
StatusCode::Code377 => None,
|
||
StatusCode::Code378 => None,
|
||
StatusCode::Code379 => None,
|
||
StatusCode::Code380 => None,
|
||
StatusCode::Code381 => None,
|
||
StatusCode::Code382 => None,
|
||
StatusCode::Code383 => None,
|
||
StatusCode::Code384 => None,
|
||
StatusCode::Code385 => None,
|
||
StatusCode::Code386 => None,
|
||
StatusCode::Code387 => None,
|
||
StatusCode::Code388 => None,
|
||
StatusCode::Code389 => None,
|
||
StatusCode::Code390 => None,
|
||
StatusCode::Code391 => None,
|
||
StatusCode::Code392 => None,
|
||
StatusCode::Code393 => None,
|
||
StatusCode::Code394 => None,
|
||
StatusCode::Code395 => None,
|
||
StatusCode::Code396 => None,
|
||
StatusCode::Code397 => None,
|
||
StatusCode::Code398 => None,
|
||
StatusCode::Code399 => None,
|
||
|
||
StatusCode::BadRequest => Some("Bad Request"),
|
||
StatusCode::Unauthorized => Some("Unauthorized"),
|
||
StatusCode::PaymentRequired => Some("Payment Required"),
|
||
StatusCode::Forbidden => Some("Forbidden"),
|
||
StatusCode::NotFound => Some("Not Found"),
|
||
StatusCode::MethodNotAllowed => Some("Method Not Allowed"),
|
||
StatusCode::NotAcceptable => Some("Not Acceptable"),
|
||
StatusCode::ProxyAuthenticationRequired => Some("Proxy Authentication Required"),
|
||
StatusCode::RequestTimeout => Some("Request Timeout"),
|
||
StatusCode::Conflict => Some("Conflict"),
|
||
StatusCode::Gone => Some("Gone"),
|
||
StatusCode::LengthRequired => Some("Length Required"),
|
||
StatusCode::PreconditionFailed => Some("Precondition Failed"),
|
||
StatusCode::RequestEntityTooLarge => Some("Request Entity Too Large"),
|
||
StatusCode::RequestUriTooLong => Some("Request-URI Too Long"),
|
||
StatusCode::UnsupportedMediaType => Some("Unsupported Media Type"),
|
||
StatusCode::RequestedRangeNotSatisfiable => Some("Requested Range Not Satisfiable"),
|
||
StatusCode::ExpectationFailed => Some("Expectation Failed"),
|
||
StatusCode::ImATeapot => Some("I'm a teapot"),
|
||
StatusCode::AuthenticationTimeout => Some("Authentication Timeout"),
|
||
StatusCode::Code420 => None,
|
||
StatusCode::Code421 => None,
|
||
StatusCode::UnprocessableEntity => Some("Unprocessable Entity"),
|
||
StatusCode::Locked => Some("Locked"),
|
||
StatusCode::FailedDependency => Some("Failed Dependency"),
|
||
StatusCode::UnorderedCollection => Some("Unordered Collection"),
|
||
StatusCode::UpgradeRequired => Some("Upgrade Required"),
|
||
StatusCode::Code427 => None,
|
||
StatusCode::PreconditionRequired => Some("Precondition Required"),
|
||
StatusCode::TooManyRequests => Some("Too Many Requests"),
|
||
StatusCode::Code430 => None,
|
||
StatusCode::RequestHeaderFieldsTooLarge => Some("Request Header Fields Too Large"),
|
||
StatusCode::Code432 => None,
|
||
StatusCode::Code433 => None,
|
||
StatusCode::Code434 => None,
|
||
StatusCode::Code435 => None,
|
||
StatusCode::Code436 => None,
|
||
StatusCode::Code437 => None,
|
||
StatusCode::Code438 => None,
|
||
StatusCode::Code439 => None,
|
||
StatusCode::Code440 => None,
|
||
StatusCode::Code441 => None,
|
||
StatusCode::Code442 => None,
|
||
StatusCode::Code443 => None,
|
||
StatusCode::Code444 => None,
|
||
StatusCode::Code445 => None,
|
||
StatusCode::Code446 => None,
|
||
StatusCode::Code447 => None,
|
||
StatusCode::Code448 => None,
|
||
StatusCode::Code449 => None,
|
||
StatusCode::Code450 => None,
|
||
StatusCode::UnavailableForLegalReasons => Some("Unavailable For Legal Reasons"),
|
||
StatusCode::Code452 => None,
|
||
StatusCode::Code453 => None,
|
||
StatusCode::Code454 => None,
|
||
StatusCode::Code455 => None,
|
||
StatusCode::Code456 => None,
|
||
StatusCode::Code457 => None,
|
||
StatusCode::Code458 => None,
|
||
StatusCode::Code459 => None,
|
||
StatusCode::Code460 => None,
|
||
StatusCode::Code461 => None,
|
||
StatusCode::Code462 => None,
|
||
StatusCode::Code463 => None,
|
||
StatusCode::Code464 => None,
|
||
StatusCode::Code465 => None,
|
||
StatusCode::Code466 => None,
|
||
StatusCode::Code467 => None,
|
||
StatusCode::Code468 => None,
|
||
StatusCode::Code469 => None,
|
||
StatusCode::Code470 => None,
|
||
StatusCode::Code471 => None,
|
||
StatusCode::Code472 => None,
|
||
StatusCode::Code473 => None,
|
||
StatusCode::Code474 => None,
|
||
StatusCode::Code475 => None,
|
||
StatusCode::Code476 => None,
|
||
StatusCode::Code477 => None,
|
||
StatusCode::Code478 => None,
|
||
StatusCode::Code479 => None,
|
||
StatusCode::Code480 => None,
|
||
StatusCode::Code481 => None,
|
||
StatusCode::Code482 => None,
|
||
StatusCode::Code483 => None,
|
||
StatusCode::Code484 => None,
|
||
StatusCode::Code485 => None,
|
||
StatusCode::Code486 => None,
|
||
StatusCode::Code487 => None,
|
||
StatusCode::Code488 => None,
|
||
StatusCode::Code489 => None,
|
||
StatusCode::Code490 => None,
|
||
StatusCode::Code491 => None,
|
||
StatusCode::Code492 => None,
|
||
StatusCode::Code493 => None,
|
||
StatusCode::Code494 => None,
|
||
StatusCode::Code495 => None,
|
||
StatusCode::Code496 => None,
|
||
StatusCode::Code497 => None,
|
||
StatusCode::Code498 => None,
|
||
StatusCode::Code499 => None,
|
||
|
||
StatusCode::InternalServerError => Some("Internal Server Error"),
|
||
StatusCode::NotImplemented => Some("Not Implemented"),
|
||
StatusCode::BadGateway => Some("Bad Gateway"),
|
||
StatusCode::ServiceUnavailable => Some("Service Unavailable"),
|
||
StatusCode::GatewayTimeout => Some("Gateway Timeout"),
|
||
StatusCode::HttpVersionNotSupported => Some("HTTP Version Not Supported"),
|
||
StatusCode::VariantAlsoNegotiates => Some("Variant Also Negotiates"),
|
||
StatusCode::InsufficientStorage => Some("Insufficient Storage"),
|
||
StatusCode::LoopDetected => Some("Loop Detected"),
|
||
StatusCode::Code509 => None,
|
||
StatusCode::NotExtended => Some("Not Extended"),
|
||
StatusCode::NetworkAuthenticationRequired => Some("Network Authentication Required"),
|
||
StatusCode::Code512 => None,
|
||
StatusCode::Code513 => None,
|
||
StatusCode::Code514 => None,
|
||
StatusCode::Code515 => None,
|
||
StatusCode::Code516 => None,
|
||
StatusCode::Code517 => None,
|
||
StatusCode::Code518 => None,
|
||
StatusCode::Code519 => None,
|
||
StatusCode::Code520 => None,
|
||
StatusCode::Code521 => None,
|
||
StatusCode::Code522 => None,
|
||
StatusCode::Code523 => None,
|
||
StatusCode::Code524 => None,
|
||
StatusCode::Code525 => None,
|
||
StatusCode::Code526 => None,
|
||
StatusCode::Code527 => None,
|
||
StatusCode::Code528 => None,
|
||
StatusCode::Code529 => None,
|
||
StatusCode::Code530 => None,
|
||
StatusCode::Code531 => None,
|
||
StatusCode::Code532 => None,
|
||
StatusCode::Code533 => None,
|
||
StatusCode::Code534 => None,
|
||
StatusCode::Code535 => None,
|
||
StatusCode::Code536 => None,
|
||
StatusCode::Code537 => None,
|
||
StatusCode::Code538 => None,
|
||
StatusCode::Code539 => None,
|
||
StatusCode::Code540 => None,
|
||
StatusCode::Code541 => None,
|
||
StatusCode::Code542 => None,
|
||
StatusCode::Code543 => None,
|
||
StatusCode::Code544 => None,
|
||
StatusCode::Code545 => None,
|
||
StatusCode::Code546 => None,
|
||
StatusCode::Code547 => None,
|
||
StatusCode::Code548 => None,
|
||
StatusCode::Code549 => None,
|
||
StatusCode::Code550 => None,
|
||
StatusCode::Code551 => None,
|
||
StatusCode::Code552 => None,
|
||
StatusCode::Code553 => None,
|
||
StatusCode::Code554 => None,
|
||
StatusCode::Code555 => None,
|
||
StatusCode::Code556 => None,
|
||
StatusCode::Code557 => None,
|
||
StatusCode::Code558 => None,
|
||
StatusCode::Code559 => None,
|
||
StatusCode::Code560 => None,
|
||
StatusCode::Code561 => None,
|
||
StatusCode::Code562 => None,
|
||
StatusCode::Code563 => None,
|
||
StatusCode::Code564 => None,
|
||
StatusCode::Code565 => None,
|
||
StatusCode::Code566 => None,
|
||
StatusCode::Code567 => None,
|
||
StatusCode::Code568 => None,
|
||
StatusCode::Code569 => None,
|
||
StatusCode::Code570 => None,
|
||
StatusCode::Code571 => None,
|
||
StatusCode::Code572 => None,
|
||
StatusCode::Code573 => None,
|
||
StatusCode::Code574 => None,
|
||
StatusCode::Code575 => None,
|
||
StatusCode::Code576 => None,
|
||
StatusCode::Code577 => None,
|
||
StatusCode::Code578 => None,
|
||
StatusCode::Code579 => None,
|
||
StatusCode::Code580 => None,
|
||
StatusCode::Code581 => None,
|
||
StatusCode::Code582 => None,
|
||
StatusCode::Code583 => None,
|
||
StatusCode::Code584 => None,
|
||
StatusCode::Code585 => None,
|
||
StatusCode::Code586 => None,
|
||
StatusCode::Code587 => None,
|
||
StatusCode::Code588 => None,
|
||
StatusCode::Code589 => None,
|
||
StatusCode::Code590 => None,
|
||
StatusCode::Code591 => None,
|
||
StatusCode::Code592 => None,
|
||
StatusCode::Code593 => None,
|
||
StatusCode::Code594 => None,
|
||
StatusCode::Code595 => None,
|
||
StatusCode::Code596 => None,
|
||
StatusCode::Code597 => None,
|
||
StatusCode::Code598 => None,
|
||
StatusCode::Code599 => None,
|
||
}
|
||
}
|
||
|
||
/// Determine the class of a status code, based on its first digit.
|
||
pub fn class(&self) -> StatusClass {
|
||
let code = *self as u16; // Range of possible values: 100..599.
|
||
// We could match 100..199 &c., but this way we avoid unreachable!() at the end.
|
||
if code < 200 {
|
||
StatusClass::Informational
|
||
} else if code < 300 {
|
||
StatusClass::Success
|
||
} else if code < 400 {
|
||
StatusClass::Redirection
|
||
} else if code < 500 {
|
||
StatusClass::ClientError
|
||
} else {
|
||
StatusClass::ServerError
|
||
}
|
||
}
|
||
}
|
||
|
||
impl Copy for StatusCode {}
|
||
|
||
/// Formats the status code, *including* the canonical reason.
|
||
///
|
||
/// ```rust
|
||
/// # use hyper::status::StatusCode::{ImATeapot, Code123};
|
||
/// # #[allow(unstable)]
|
||
/// # fn main() {
|
||
/// assert_eq!(&format!("{}", ImATeapot)[],
|
||
/// "418 I'm a teapot");
|
||
/// assert_eq!(&format!("{}", Code123)[],
|
||
/// "123 <unknown status code>");
|
||
/// # }
|
||
/// ```
|
||
///
|
||
/// If you wish to just include the number, cast to a u16 instead.
|
||
impl fmt::String for StatusCode {
|
||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||
write!(f, "{} {}", *self as u16,
|
||
self.canonical_reason().unwrap_or("<unknown status code>"))
|
||
}
|
||
}
|
||
|
||
// Specified manually because the codegen for derived is slow (at the time of writing on the machine
|
||
// of writing, 1.2 seconds) and verbose (though the optimiser cuts it down to size).
|
||
impl PartialEq for StatusCode {
|
||
#[inline]
|
||
fn eq(&self, other: &StatusCode) -> bool {
|
||
*self as u16 == *other as u16
|
||
}
|
||
}
|
||
|
||
impl Eq for StatusCode {}
|
||
|
||
// Ditto (though #[derive(Clone)] only takes about 0.4 seconds).
|
||
impl Clone for StatusCode {
|
||
#[inline]
|
||
fn clone(&self) -> StatusCode {
|
||
*self
|
||
}
|
||
}
|
||
|
||
// Of the other common derivable traits, I didn’t measure them, but I guess they would be slow too.
|
||
|
||
impl FromPrimitive for StatusCode {
|
||
fn from_i64(n: i64) -> Option<StatusCode> {
|
||
if n < 100 || n > 599 {
|
||
None
|
||
} else {
|
||
Some(unsafe { transmute::<u16, StatusCode>(n as u16) })
|
||
}
|
||
}
|
||
|
||
fn from_u64(n: u64) -> Option<StatusCode> {
|
||
if n < 100 || n > 599 {
|
||
None
|
||
} else {
|
||
Some(unsafe { transmute::<u16, StatusCode>(n as u16) })
|
||
}
|
||
}
|
||
}
|
||
|
||
impl PartialOrd for StatusCode {
|
||
#[inline]
|
||
fn partial_cmp(&self, other: &StatusCode) -> Option<Ordering> {
|
||
(*self as u16).partial_cmp(&(*other as u16))
|
||
}
|
||
}
|
||
|
||
impl Ord for StatusCode {
|
||
#[inline]
|
||
fn cmp(&self, other: &StatusCode) -> Ordering {
|
||
if *self < *other {
|
||
Less
|
||
} else if *self > *other {
|
||
Greater
|
||
} else {
|
||
Equal
|
||
}
|
||
}
|
||
}
|
||
|
||
impl ToPrimitive for StatusCode {
|
||
fn to_i64(&self) -> Option<i64> {
|
||
Some(*self as i64)
|
||
}
|
||
|
||
fn to_u64(&self) -> Option<u64> {
|
||
Some(*self as u64)
|
||
}
|
||
}
|
||
|
||
/// The class of an HTTP `Status-Code`.
|
||
///
|
||
/// [RFC 2616, section 6.1.1 (Status Code and Reason
|
||
/// Phrase)](https://tools.ietf.org/html/rfc2616#section-6.1.1):
|
||
///
|
||
/// > The first digit of the Status-Code defines the class of response. The
|
||
/// > last two digits do not have any categorization role.
|
||
/// >
|
||
/// > ...
|
||
/// >
|
||
/// > HTTP status codes are extensible. HTTP applications are not required
|
||
/// > to understand the meaning of all registered status codes, though such
|
||
/// > understanding is obviously desirable. However, applications MUST
|
||
/// > understand the class of any status code, as indicated by the first
|
||
/// > digit, and treat any unrecognized response as being equivalent to the
|
||
/// > x00 status code of that class, with the exception that an
|
||
/// > unrecognized response MUST NOT be cached. For example, if an
|
||
/// > unrecognized status code of 431 is received by the client, it can
|
||
/// > safely assume that there was something wrong with its request and
|
||
/// > treat the response as if it had received a 400 status code. In such
|
||
/// > cases, user agents SHOULD present to the user the entity returned
|
||
/// > with the response, since that entity is likely to include human-
|
||
/// > readable information which will explain the unusual status.
|
||
///
|
||
/// This can be used in cases where a status code’s meaning is unknown, also,
|
||
/// to get the appropriate *category* of status.
|
||
///
|
||
/// For HTTP/2.0, the 1xx Informational class is invalid.
|
||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Copy)]
|
||
pub enum StatusClass {
|
||
/// 1xx: Informational - Request received, continuing process
|
||
Informational = 100,
|
||
|
||
/// 2xx: Success - The action was successfully received, understood, and accepted
|
||
Success = 200,
|
||
|
||
/// 3xx: Redirection - Further action must be taken in order to complete the request
|
||
Redirection = 300,
|
||
|
||
/// 4xx: Client Error - The request contains bad syntax or cannot be fulfilled
|
||
ClientError = 400,
|
||
|
||
/// 5xx: Server Error - The server failed to fulfill an apparently valid request
|
||
ServerError = 500,
|
||
}
|
||
|
||
impl StatusClass {
|
||
/// Get the default status code for the class.
|
||
///
|
||
/// This produces the x00 status code; thus, for `ClientError` (4xx), for example, this will
|
||
/// produce `BadRequest` (400):
|
||
///
|
||
/// ```rust
|
||
/// # use hyper::status::StatusClass::ClientError;
|
||
/// # use hyper::status::StatusCode::BadRequest;
|
||
/// assert_eq!(ClientError.default_code(), BadRequest);
|
||
/// ```
|
||
///
|
||
/// The use for this is outlined in [RFC 2616, section 6.1.1 (Status Code and Reason
|
||
/// Phrase)](https://tools.ietf.org/html/rfc2616#section-6.1.1):
|
||
///
|
||
/// > HTTP status codes are extensible. HTTP applications are not required
|
||
/// > to understand the meaning of all registered status codes, though such
|
||
/// > understanding is obviously desirable. However, applications MUST
|
||
/// > understand the class of any status code, as indicated by the first
|
||
/// > digit, and treat any unrecognized response as being equivalent to the
|
||
/// > x00 status code of that class, with the exception that an
|
||
/// > unrecognized response MUST NOT be cached. For example, if an
|
||
/// > unrecognized status code of 431 is received by the client, it can
|
||
/// > safely assume that there was something wrong with its request and
|
||
/// > treat the response as if it had received a 400 status code. In such
|
||
/// > cases, user agents SHOULD present to the user the entity returned
|
||
/// > with the response, since that entity is likely to include human-
|
||
/// > readable information which will explain the unusual status.
|
||
///
|
||
/// This is demonstrated thusly (I’ll use 432 rather than 431 as 431 *is* now in use):
|
||
///
|
||
/// ```rust
|
||
/// # use hyper::status::StatusCode::{Code432, BadRequest};
|
||
/// // Suppose we have received this status code.
|
||
/// let status = Code432;
|
||
///
|
||
/// // Uh oh! Don’t know what to do with it.
|
||
/// // Let’s fall back to the default:
|
||
/// let status = status.class().default_code();
|
||
///
|
||
/// // And look! That is 400 Bad Request.
|
||
/// assert_eq!(status, BadRequest);
|
||
/// // So now let’s treat it as that.
|
||
/// ```
|
||
#[inline]
|
||
pub fn default_code(&self) -> StatusCode {
|
||
unsafe { transmute::<StatusClass, StatusCode>(*self) }
|
||
}
|
||
}
|
||
|
||
impl ToPrimitive for StatusClass {
|
||
fn to_i64(&self) -> Option<i64> {
|
||
Some(*self as i64)
|
||
}
|
||
|
||
fn to_u64(&self) -> Option<u64> {
|
||
Some(*self as u64)
|
||
}
|
||
}
|