@fastly/as-fetch
Version:
 
230 lines (221 loc) • 4.43 kB
text/typescript
// Copyright 2020 Fastly, Inc.
/**
* An HTTP Status object.
*/
export class Status {
/**
* Status code for the HTTP request or response.
*/
code: u16;
/**
* Construct a new status instance.
*
* @param code an unsigned 16 bit integer representing the HTTP Status code.
*/
constructor(code: u16) {
this.code = code;
}
/**
* Get the text associated with the status code.
*
* Status text(s) come from:
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
*
* @returns a string containing the text for the Response status code.
*/
toString(): string {
switch (this.code) {
/* 1XX */
case 100: {
return "Continue";
}
case 101: {
return "Switching Protocol";
}
case 102: {
return "Processing";
}
case 103: {
return "Early Hints";
}
/* 2XX */
case 200: {
return "OK";
}
case 201: {
return "Created";
}
case 203: {
return "Non-Authoritative Information";
}
case 204: {
return "No Content";
}
case 205: {
return "Reset Content";
}
case 206: {
return "Partial Content";
}
case 207: {
return "Multi-Status";
}
case 208: {
return "Already Reported";
}
case 226: {
return "IM Used";
}
/* 3XX */
case 300: {
return "Multiple Choice";
}
case 301: {
return "Moved Permenantly";
}
case 302: {
return "Found";
}
case 303: {
return "See Other";
}
case 304: {
return "Not Modified";
}
case 305: {
return "Use Proxy";
}
case 306: {
return "Unused";
}
case 307: {
return "Temporary Redirect";
}
case 308: {
return "Permanent Redirect";
}
/* 4XX */
case 400: {
return "Bad Request";
}
case 401: {
return "Unauthorized";
}
case 402: {
return "Payment Required";
}
case 403: {
return "Forbidden";
}
case 404: {
return "Not Found";
}
case 405: {
return "Method Not Allowed";
}
case 406: {
return "Not Acceptable";
}
case 408: {
return "Request Timeout";
}
case 409: {
return "Conflict";
}
case 410: {
return "Gone";
}
case 411: {
return "Length Required";
}
case 412: {
return "Precondition Failed";
}
case 413: {
return "Payload Too Large";
}
case 414: {
return "URI Too Long";
}
case 415: {
return "Unsupported Media Type";
}
case 416: {
return "Range Not Satisfiable";
}
case 417: {
return "Expectation Failed";
}
case 418: {
return "Im a Teapot";
}
case 421: {
return "Misdirected Request";
}
case 422: {
return "Unprocessable Entity";
}
case 423: {
return "Locked";
}
case 424: {
return "Failed Dependency";
}
case 425: {
return "Too Early";
}
case 426: {
return "Upgrade Required";
}
case 428: {
return "Precondition Required";
}
case 429: {
return "Too Many Requests";
}
case 431: {
return "Request Header Fields Too Large";
}
case 451: {
return "Unavailable For Legal Reasons";
}
/* 5XX */
case 500: {
return "Internal Server Error";
}
case 501: {
return "Not Implemented";
}
case 502: {
return "Bad Gateway";
}
case 503: {
return "Service Unavailable";
}
case 504: {
return "Gateway Timeout";
}
case 505: {
return "HTTP Version Not Supported";
}
case 506: {
return "Variant Also Negotiates";
}
case 507: {
return "Insufficient Storage";
}
case 508: {
return "Loop Detected";
}
case 510: {
return "Not Extended";
}
case 511: {
return "Network Authentication Required";
}
default: {
return "";
}
}
}
}