https://github.com/idiocc/statuses
HTTP status utility.
https://github.com/idiocc/statuses
goa http idio status
Last synced: 11 months ago
JSON representation
HTTP status utility.
- Host: GitHub
- URL: https://github.com/idiocc/statuses
- Owner: idiocc
- License: agpl-3.0
- Created: 2019-12-12T23:59:40.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-13T21:20:49.000Z (about 6 years ago)
- Last Synced: 2025-03-17T23:24:36.777Z (11 months ago)
- Topics: goa, http, idio, status
- Language: JavaScript
- Homepage: https://www.idio.cc
- Size: 79.1 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: COPYING
Awesome Lists containing this project
README
# @goa/statuses
[](https://www.npmjs.com/package/@goa/statuses)
`@goa/statuses` is HTTP status utility.
```sh
yarn add @goa/statuses
```
## Table Of Contents
- [Table Of Contents](#table-of-contents)
- [API](#api)
- [`status(code: number|string): number`](#statuscode-numberstring-number)
- [Codes Objects](#codes-objects)
* [`STATUS_CODES`](#type-status_codes)
* [`codes`](#type-codes)
* [status[code]](#statuscode)
* [status[message]](#statusmessage)
* [redirect[code]](#redirectcode)
* [empty[code]](#emptycode)
* [retry[code]](#retrycode)
- [Copyright & License](#copyright--license)
## API
The package is available by importing its default function and additional objects populated with status codes:
```js
import status, { STATUS_CODES } from '@goa/statuses'
```
## status(
`code: number|string,`
): number
Get the status code.
Given a number, this will throw if it is not a known status code, otherwise the code will be returned. Given a string, the string will be parsed for a number and return the code if valid, otherwise will lookup the code assuming this is the status message.
- code* (number \| string): The code or phrase.
```js
import status from '@goa/statuses'
console.log(status(403)) // => 403
console.log(status('403')) // => 403
console.log(status('forbidden')) // => 403
console.log(status('Forbidden')) // => 403
try {
status(5000) // throws, as it's not supported by Node.JS
} catch (err) {
console.log(err.message)
}
```
```
403
403
403
403
invalid status code: 5000
```
## Codes Objects
Additional exports are populated with codes directly.
!Object<string, string> `STATUS_CODES`
Returns an object which maps status codes to status messages, in the same format as the [Node.JS](https://nodejs.org/dist/latest/docs/api/http.html#http_http_status_codes) `http` module.
```js
import { STATUS_CODES } from '@goa/statuses'
console.log(STATUS_CODES)
```
```js
{ '100': 'Continue',
'101': 'Switching Protocols',
'102': 'Processing',
'103': 'Early Hints',
'200': 'OK',
'201': 'Created',
'202': 'Accepted',
'203': 'Non-Authoritative Information',
'204': 'No Content',
'205': 'Reset Content',
'206': 'Partial Content',
'207': 'Multi-Status',
'208': 'Already Reported',
'226': 'IM Used',
'300': 'Multiple Choices',
'301': 'Moved Permanently',
'302': 'Found',
'303': 'See Other',
'304': 'Not Modified',
'305': 'Use Proxy',
'306': '(Unused)',
'307': 'Temporary Redirect',
'308': 'Permanent Redirect',
'400': 'Bad Request',
'401': 'Unauthorized',
'402': 'Payment Required',
'403': 'Forbidden',
'404': 'Not Found',
'405': 'Method Not Allowed',
'406': 'Not Acceptable',
'407': 'Proxy Authentication Required',
'408': 'Request Timeout',
'409': 'Conflict',
'410': 'Gone',
'411': 'Length Required',
'412': 'Precondition Failed',
'413': 'Payload Too Large',
'414': 'URI Too Long',
'415': 'Unsupported Media Type',
'416': 'Range Not Satisfiable',
'417': 'Expectation Failed',
'418': 'I\'m a teapot',
'421': 'Misdirected Request',
'422': 'Unprocessable Entity',
'423': 'Locked',
'424': 'Failed Dependency',
'425': 'Unordered Collection',
'426': 'Upgrade Required',
'428': 'Precondition Required',
'429': 'Too Many Requests',
'431': 'Request Header Fields Too Large',
'451': 'Unavailable For Legal Reasons',
'500': 'Internal Server Error',
'501': 'Not Implemented',
'502': 'Bad Gateway',
'503': 'Service Unavailable',
'504': 'Gateway Timeout',
'505': 'HTTP Version Not Supported',
'506': 'Variant Also Negotiates',
'507': 'Insufficient Storage',
'508': 'Loop Detected',
'509': 'Bandwidth Limit Exceeded',
'510': 'Not Extended',
'511': 'Network Authentication Required' }
```
!Array<number> __`codes`__
Returns an array of all the status codes as numbers.
```js
import { codes } from '@goa/statuses'
console.log(codes)
```
```js
[ 100,
101,
102,
103,
200,
201,
202,
203,
204,
205,
206,
207,
208,
226,
300,
301,
302,
303,
304,
305,
306,
307,
308,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
421,
422,
423,
424,
425,
426,
428,
429,
431,
451,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511 ]
```
### status[code]
Map of `code` to `status message`. Returns `undefined` for invalid codes.
SourceOutput
```js
import status from '@goa/statuses'
console.log(status[404])
```
```js
Not Found
```
### status[message]
Map of `status message` to `code`. `msg` can either be title-cased or lower-cased. Returns `undefined` for invalid status messages.
SourceOutput
```js
import status from '@goa/statuses'
console.log(status['not found'])
console.log(status['Not Found'])
```
```js
404
404
```
### redirect[code]
Returns `true` if a status code is a valid redirect status.
SourceOutput
```js
import { redirect } from '@goa/statuses'
console.log(redirect[200])
console.log(redirect[301])
```
```js
undefined
true
```
### empty[code]
Returns `true` if a status code expects an empty body.
SourceOutput
```js
import { empty } from '@goa/statuses'
console.log(empty[200])
console.log(empty[204])
console.log(empty[304])
```
```js
undefined
true
true
```
### retry[code]
Returns `true` if you should retry the rest.
SourceOutput
```js
import { retry } from '@goa/statuses'
console.log(retry[501])
console.log(retry[503])
```
```js
undefined
true
```
## Copyright & License
GNU Affero General Public License v3.0
[Original work](https://github.com/jshttp/statuses#readme) by Jonathan Ong and Douglas Christopher Wilson under MIT license found in [COPYING](COPYING).
© Art Deco™ 2019