@polka/send-type

0.5.2 • Public • Published

@polka/send-type npm

An HTTP response helper that detects Content-Types & 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 in headers
  • Sets Content-Length

Objects

  • Casts data to string via JSON.stringify
  • Sets Content-Type to 'application/json; charset=utf-8', unless one exists in headers
  • Sets Content-Length

Streams

  • Sets Content-Type to 'application/octet-stream', unless one exists in headers
  • Pipes data into the res 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

Readme

Keywords

none

Package Sidebar

Install

npm i @polka/send-type

Weekly Downloads

18,340

Version

0.5.2

License

MIT

Unpacked Size

3.97 kB

Total Files

4

Last publish

Collaborators

  • lukeed