UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

91 lines (83 loc) • 4.96 kB
import { Enum } from '../types/Enum'; import { TypeGuard } from '../types/TypeGuard'; import { isAn } from '../types/IsA'; import { Code } from '../types/Id'; export class HttpStatus extends Enum { static Continue = new HttpStatus('Continue', 100); static SwitchingProtocols = new HttpStatus('Switching protocols', 101); static Processing = new HttpStatus('Processing', 102); static EarlyHints = new HttpStatus('Early hints', 103); static Ok = new HttpStatus('Ok', 200); static Created = new HttpStatus('Created', 201); static Accepted = new HttpStatus('Accepted', 202); static NonAuthoritativeInformation = new HttpStatus('Non-authoritative information', 203); static NoContent = new HttpStatus('No content', 204); static ResetContent = new HttpStatus('Reset content', 205); static PartialContent = new HttpStatus('Partial content', 206); static MultiStatus = new HttpStatus('Multi-status', 207); static AlreadyReported = new HttpStatus('Already reported', 208); static ImUsed = new HttpStatus('IM used', 226); static MultipleChoices = new HttpStatus('Multiple Choices', 300); static MovedPermanently = new HttpStatus('Moved Permanently', 301); static Found = new HttpStatus('Found', 302); static SeeOther = new HttpStatus('See other', 303); static NotModified = new HttpStatus('Not modified', 304); static UseProxy = new HttpStatus('Use proxy', 305); static SwitchProxy = new HttpStatus('Switch proxy', 306); static TemporaryRedirect = new HttpStatus('Temporary redirect', 307); static PermanentRedirect = new HttpStatus('Permanent redirect', 308); static BadRequest = new HttpStatus('Bad request', 400); static NotAuthorized = new HttpStatus('Not authorized', 401); static PaymentRequired = new HttpStatus('Payment required', 402); static Forbidden = new HttpStatus('Forbidden', 403); static NotFound = new HttpStatus('Not found', 404); static MethodNotAllowed = new HttpStatus('Method not allowed', 405); static NotAcceptable = new HttpStatus('Not acceptable', 406); static ProxyAuthenticationRequired = new HttpStatus('Proxy authentication required', 407); static RequestTimeout = new HttpStatus('Request timeout', 408); static Conflict = new HttpStatus('Conflict', 409); static Gone = new HttpStatus('Gone', 410); static LengthRequired = new HttpStatus('Length required', 411); static PreconditionFailed = new HttpStatus('Precondition failed', 412); static PayloadTooLarge = new HttpStatus('Payload too large', 413); static UriTooLong = new HttpStatus('URI too long', 414); static UnsupportedMediaType = new HttpStatus('Unsupported media type', 415); static RangeNotSatisfiable = new HttpStatus('Range not satisfiable', 416); static ExpectationFailed = new HttpStatus('Expectation failed', 417); static ImATeapot = new HttpStatus("I'm a teapot", 418); static MisdirectedRequest = new HttpStatus('Misdirected request', 421); static UnprocessableEntity = new HttpStatus('Unprocessable entity', 422); static Locked = new HttpStatus('Locked', 423); static FailedDependency = new HttpStatus('Failed dependency', 424); static TooEarly = new HttpStatus('Too early', 425); static UpgradeRequired = new HttpStatus('Upgrade required', 426); static PreconditionRequired = new HttpStatus('Precondition required', 428); static TooManyRequests = new HttpStatus('Too many requests', 429); static RequestHeaderFieldsTooLarge = new HttpStatus('Request header fields too large', 431); static UnavailableForLegalReasons = new HttpStatus('Unavailable for legal reasons', 451); static InternalServerError = new HttpStatus('Internal server error', 500); static NotImplemented = new HttpStatus('Not implemented', 501); static BadGateway = new HttpStatus('Bad gateway', 502); static ServiceUnavailable = new HttpStatus('Service unavailable', 503); static GatewayTimeout = new HttpStatus('Gateway timeout', 504); static HTTPVersionNotSupported = new HttpStatus('Http version not supported', 505); static VariantAlsoNegotiates = new HttpStatus('Variant also negotiates', 506); static InsufficientStorage = new HttpStatus('Insufficient storage', 507); static LoopDetected = new HttpStatus('Loop detected', 508); static NotExtended = new HttpStatus('Not extended', 510); static NetworkAuthenticationRequired = new HttpStatus('Network authentication required', 511); get isError(): boolean { return this.isClientError || this.isServerError; } get isClientError(): boolean { return (this.id as number) >= 400 && (this.id as number) < 500; } get isServerError(): boolean { return (this.id as number) >= 500 && (this.id as number) < 600; } get status(): number { return this.id as number; } } export const isHttpStatus: TypeGuard<HttpStatus> = (s?: unknown): s is HttpStatus => isAn<HttpStatus>(s, 'id', 'status'); export const toHttpStatus = (s: HttpStatus | Code): HttpStatus => (isHttpStatus(s) ? s : HttpStatus.byId(s));