handle-http-error

0.1.1 • Public • Published

Handle HTTP Error

Build Status Coverage Status

Handle a few common cases when an HTTP request got an error.

How to use

// The module exports a builder function.
const buildHandler = require('handle-http-error');

// The builder can build an error handler. The `overrides` is an optional object, and if provided,
// will be merged into the result error instance, overriding any conflicts.
const handler = buildHandler(overrides);

// The handler is a function that can be used to parse HTTP responses or errors, and it will throw an
// HTTP error (with the module `http-errors`) if it sees an error or an HTTP response with status 4xx
// or 5xx. For examples (see the use cases and the tests for more complete examples):
handler(error);
handler(res, body);

// The handler can look into the arguments and try to find an object that looks like an error, and
// merge the attributes into the result error. For example this would throw an error with an attribute
// `code: 40400`:
handler(res, { error: { statusCode: 404, code: 40400, message: '404 Not Found' } });

Use cases

Request + Bluebird

const request = require('request').defaults({ json: true });
require('bluebird').promisifyAll(request, { multiArgs: true });

const handler = require('handle-http-error')({
  type: 'application'
});

// When it responses 2xx.
request.getAsync(someUrl).spread(handler).spread((res, body) => {
  // ...
});

// When it responses 404.
request.getAsync(someUrl).spread(handler).then(() => {
  throw new Error('expected an error');
}, (err) => {
  err.should.be.Error();
  err.should.have.property('statusCode', 404);
  err.should.have.property('message', '404 Not Found');
  err.should.have.property('type', 'application');
});

// When it responses 404 and custom informations with HTML body (like `{ error: { statusCode: 404,
// code: 40400, message: '404 Not Found' } }`).
return request.getAsync(someUrl).spread(handler).then(() => {
  throw new Error('expected an error');
}, (err) => {
  err.should.be.Error();
  err.should.have.property('statusCode', 404);
  err.should.have.property('code', 40400);
  err.should.have.property('message', '404 Not Found');
  err.should.have.property('type', 'application');
});

Package Sidebar

Install

npm i handle-http-error

Weekly Downloads

89

Version

0.1.1

License

MIT

Last publish

Collaborators

  • makara