@polka/send-type
v0.5.2
Published
A response helper that detects & handles Content-Types
Downloads
32,804
Readme
@polka/send-type
An HTTP response helper that detects
Content-Type
s & handles them accordingly — not limited to Polka!
For a simpler, bare-bones alternative, check out @polka/send
instead~
Install
$ npm install --save @polka/send-type
Usage
const { createReadStream } = require('fs');
const send = require('@polka/send-type');
module.exports = function (req, res) {
if (!req.getHeader('authorization')) {
// Objects are converted to JSON
return send(res, 401, { error:'Token required!' });
}
// Streams & Buffers are auto-piped
// Your 'Content-Type' is always used,
// ~> otherwise 'application/octet-stream'
let file = createReadStream('massive.mp4');
send(res, 206, file, { 'Content-Type': 'video/mp4' });
}
API
send(res, code, data, headers)
res
Type: ServerReponse
The outgoing HTTP response.
code
Type: Number
Default: 200
The statusCode
for your response.
data
Type: String
Default: ''
The body
for your response. Defaults to the statusText
for the given statusCode
.
See Data Detections for special behaviors.
headers
Type: Object
Default: {}
The headers
for your response.
The Content-Type
header is a little unique – it will be set with the value you provide in headers
. However, if you did not set a value explicitly, then send-type
will reuse the existing value via res.getHeader
.If neither existed, then the Content-Type
will be inferred by the data type.
See Data Detections for special behaviors.
Data Detections
The following operations will be performed for the following data types:
Important: If this is too much magic for you, check out
@polka/send
instead!
Buffers
- Sets
Content-Type
to'application/octet-stream'
, unless one exists inheaders
- Sets
Content-Length
Objects
- Casts
data
to string viaJSON.stringify
- Sets
Content-Type
to'application/json; charset=utf-8'
, unless one exists inheaders
- Sets
Content-Length
Streams
- Sets
Content-Type
to'application/octet-stream'
, unless one exists inheaders
- Pipes
data
into theres
directly
Support
Any issues or questions can be sent to the Polka repo, but please specify that you are using @polka/send-type
.
License
MIT © Luke Edwards