import { Status } from "./deps.ts";
export abstract class HttpError extends Error { statusCode: number;
constructor(message: string, statusCode: number, options?: ErrorOptions) { super(message, options); this.statusCode = statusCode; }}
export class BadRequestError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Bad Request", Status.BadRequest, options); }}
export class UnauthorizedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Unauthorized", Status.Unauthorized, options); }}
export class PaymentRequiredError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Payment Required", Status.PaymentRequired, options); }}
export class ForbiddenError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Forbidden", Status.Forbidden, options); }}
export class NotFoundError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Not Found", Status.NotFound, options); }}
export class MethodNotAllowedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Method Not Allowed", Status.MethodNotAllowed, options); }}
export class NotAcceptableError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Not Acceptable", Status.NotAcceptable, options); }}
export class ProxyAuthenticationRequiredError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Proxy Authentication Required", Status.ProxyAuthRequired, options ); }}
export class RequestTimeoutError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Request Timeout", Status.RequestTimeout, options); }}
export class ConflictError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Conflict", Status.Conflict, options); }}
export class GoneError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Gone", Status.Gone, options); }}
export class LengthRequiredError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Length Required", Status.LengthRequired, options); }}
export class PreconditionFailedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Precondition Failed", Status.PreconditionFailed, options); }}
export class PayloadTooLargeError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Payload Too Large", Status.RequestEntityTooLarge, options ); }}
export class URITooLongError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "URI Too Long", Status.RequestURITooLong, options); }}
export class UnsupportedMediaTypeError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Unsupported Media Type", Status.UnsupportedMediaType, options ); }}
export class RangeNotSatisfiableError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Range Not Satisfiable", Status.RequestedRangeNotSatisfiable, options ); }}
export class ExpectationFailedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Expectation Failed", Status.ExpectationFailed, options); }}
export class ImATeapotError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "I'm a teapot", Status.Teapot, options); }}
export class MisdirectedRequestError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Misdirected Request", Status.MisdirectedRequest, options); }}
export class UnprocessableEntityError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Unprocessable Entity", Status.UnprocessableEntity, options ); }}
export class LockedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Locked", Status.Locked, options); }}
export class FailedDependencyError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Failed Dependency", Status.FailedDependency, options); }}
export class TooEarlyError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Too Early", Status.TooEarly, options); }}
export class UpgradeRequiredError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Upgrade Required", Status.UpgradeRequired, options); }}
export class PreconditionRequiredError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Precondition Required", Status.PreconditionRequired, options ); }}
export class TooManyRequestsError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Too Many Requests", Status.TooManyRequests, options); }}
export class RequestHeaderFieldsTooLargeError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Request Header Fields Too Large", Status.RequestHeaderFieldsTooLarge, options ); }}
export class UnavailableForLegalReasonsError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Unavailable For Legal Reasons", Status.UnavailableForLegalReasons, options ); }}
export class InternalServerError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Internal Server Error", Status.InternalServerError, options ); }}
export class NotImplementedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Not Implemented", Status.NotImplemented, options); }}
export class BadGatewayError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Bad Gateway", Status.BadGateway, options); }}
export class ServiceUnavailableError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Service Unavailable", Status.ServiceUnavailable, options); }}
export class GatewayTimeoutError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Gateway Timeout", Status.GatewayTimeout, options); }}
export class HTTPVersionNotSupportedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "HTTP Version Not Supported", Status.HTTPVersionNotSupported, options ); }}
export class VariantAlsoNegotiatesError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Variant Also Negotiates", Status.VariantAlsoNegotiates, options ); }}
export class InsufficientStorageError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Insufficient Storage", Status.InsufficientStorage, options ); }}
export class LoopDetectedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Loop Detected", Status.LoopDetected, options); }}
export class NotExtendedError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super(message || "Not Extended", Status.NotExtended, options); }}
export class NetworkAuthenticationRequiredError extends HttpError { constructor(message?: string, options?: ErrorOptions) { super( message || "Network Authentication Required", Status.NetworkAuthenticationRequired, options ); }}