@goa/type-is
v1.0.2
Published
[fork] Infer the content-type of a request Written In ES6 And Optimised With JavaScript Compiler.
Readme
@goa/type-is
@goa/type-is is a fork of Infer the content-type of a request Written In ES6 And Optimised With JavaScript Compiler.
yarn add @goa/type-isTable Of Contents
- Table Of Contents
- API
typeis(request: http.IncomingMessage, types: string|Array<string>, ...types: string): ?string|booleanhasBody(request: http.IncomingMessage): booleanis(mediaType: string, types: string|Array<string>, ...types: string): ?string|boolean- Copyright
API
The package is available by importing its default and named functions:
import typeis, { hasBody } from '@goa/type-is'typeis( request: http.IncomingMessage, types: string|Array<string>, ...types: string,): ?string|boolean
Checks if the request is one of the types. If the request has no body, even if there is a Content-Type header, then null is returned. If the Content-Type header is invalid or does not matches any of the types, then false is returned. Otherwise, a string of the type that matched is returned.
The request argument is expected to be a Node.js HTTP request. The types argument is an array of type strings.
Each type in the types array can be one of the following:
- A file extension name such as
json. This name will be returned if matched. - A mime type such as
application/json. - A mime type with a wildcard such as
*/*or*/jsonorapplication/*. The full mime type will be returned if matched. - A suffix such as
+json. This can be combined with a wildcard such as*/vnd+jsonorapplication/*+json. The full mime type will be returned if matched.
import typeis from '@goa/type-is'
const req = {
headers: {
'content-length': 10,
'content-type': 'application/json',
},
}
log(typeis(req, ['json']))
log(typeis(req, ['html', 'json']))
log(typeis(req, ['application/*']))
log(typeis(req, ['application/json']))
// pass types as variable arguments
log(typeis(req, 'text/html', 'application/json'))
log(typeis(req, ['html']))
json
json
application/json
application/json
application/json
falsehasBody( request: http.IncomingMessage,): boolean
Returns a Boolean if the given request has a body, regardless of the Content-Type header.
Having a body has no relation to how large the body is (it may be 0 bytes). This is similar to how file existence works. If a body does exist, then this indicates that there is data to read from the Node.js request stream.
import { hasBody } from '@goa/type-is'
log(hasBody({ headers: {
'content-length': 10,
'content-type': 'application/json' },
}))
log(hasBody({ headers: {
'transfer-encoding': 'utf-8' },
}))
log(hasBody({ headers: {
'content-type': 'application/json' },
}))
true
true
falseis( mediaType: string, types: string|Array<string>, ...types: string,): ?string|boolean
Checks if the mediaType is one of the types. If the mediaType is invalid or does not matches any of the types, then false is returned. Otherwise, a string of the type that matched is returned.
The mediaType argument is expected to be a media type string. The types argument is an array of type strings.
Each type in the types array follows the same rules as described in the typeis section.
import { is } from '@goa/type-is'
const mediaType = 'application/json'
log(is(mediaType, ['json']))
log(is(mediaType, ['html', 'json']))
log(is(mediaType, ['application/*']))
log(is(mediaType, ['application/json']))
// pass types as variable arguments
log(is(mediaType, 'text/html', 'application/json'))
log(is(mediaType, ['html']))
json
json
application/json
application/json
application/json
falseCopyright
Original Work by Jonathan Ong, Douglas Christopher Wilson and contributors.
