fumble
v0.1.9
Published
Simple error objects in node. Created specifically to be used with the fetchr library and based on hapi.js' Boom.
Downloads
3,989
Readme
fumble
Simple error objects in node. Created specifically to be used with the fetchr library and based on hapi.js' Boom.
Usage
import fumble from 'fumble';
import callAndProcess from './callAndProcess';
import api from 'api';
export default api.base.service({
name: 'foo',
read: function (req, resource, params, context, callback) {
switch(resource) {
case this.name:
callAndProcess(req, params, context, callback);
return;
}
const error = fumble.http.create(400, 'Passed in an invalid resource', {
debug: [resource]
});
req.error(error);
req.debug(error.stack); // nice stack trace
/**
* logs:
* { [HttpError: Bad Request] statusCode: 400, message:
* 'Passed in an invalid resource', debug: [ resource ] }
*/
callback(error);
}
});
API Docs
fumble.http
provides a set of utilities for returning HTTP errors. Each method returns an HttpError
instance, which itself extends the native Error
class (which means you can access the stack
prop on your error instance). Each error has the following two props:
statusCode
{Number} - the HTTP status code (typically 4xx or 5xx).message
{String} - the error message
fumble.http.create ([status=500], [message='Internal Server Error'], [options])
Generate an HttpError
object where:
statusCode
- an HTTP error code number. Must be greater or equal 400message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
const error = fumble.http.create(400, 'missing params', { debug: [passedInParams] });
HTTP 4xx Errors
fumble.http.badRequest ([message='Bad Request'], [options])
returns an HTTP status code of 400
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.badRequest('invalid query');
// essentially generates
{
statusCode: 400,
message: 'invalid query'
}
fumble.http.unauthorized ([message='Unauthorized'], [options])
returns an HTTP status code of 401
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.unauthorized('not logged in');
// essentially generates
{
statusCode: 401,
message: 'not logged in'
}
fumble.http.forbidden ([message='Forbidden'], [options])
returns an HTTP status code of 403
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.forbidden('top secret');
// essentially generates
{
statusCode: 403,
message: 'top secret'
}
fumble.http.notFound ([message='Not Found'], [options])
returns an HTTP status code of 404
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.notFound('does not exist');
// essentially generates
{
statusCode: 404,
message: 'does not exist'
}
fumble.http.methodNotAllowed ([message='Method Not Allowed'], [options])
returns an HTTP status code of 405
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.methodNotAllowed('not allowed');
// essentially generates
{
statusCode: 405,
message: 'not allowed'
}
fumble.http.proxyAuthenticationRequired ([message='Proxy Authentication Required'], [options])
returns an HTTP status code of 407
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.proxyAuthenticationRequired('need to login to foo');
// essentially generates
{
statusCode: 407,
message: 'need to login to foo'
}
fumble.http.conflict ([message='Conflict'], [options])
returns an HTTP status code of 409
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.conflict('collision detected');
// essentially generates
{
statusCode: 409,
message: 'collision detected'
}
fumble.http.gone ([message='Gone'], [options])
returns an HTTP status code of 410
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.gone('bye bye');
// essentially generates
{
statusCode: 410,
message: 'bye bye'
}
fumble.http.preconditionFailed ([message='Precondition Failed'], [options])
returns an HTTP status code of 412
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.preconditionFailed('missing CLA');
// essentially generates
{
statusCode: 412,
message: 'missing CLA'
}
fumble.http.tooManyRequests ([message='Too Many Requests'], [options])
returns an HTTP status code of 429
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.tooManyRequests('slow down');
// essentially generates
{
statusCode: 429,
message: 'slow down'
}
HTTP 5xx Errors
fumble.http.internalServerError ([message='Internal Server Error'], [options])
returns an HTTP status code of 500
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.internalServerError('unkown error');
// essentially generates
{
statusCode: 500,
message: 'unknown error'
}
===
fumble.http.notImplemented ([message='Not Implemented'], [options])
returns an HTTP status code of 501
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.notImplemented('missing enhancement');
// essentially generates
{
statusCode: 501,
message: 'missing enhancement'
}
fumble.http.badGateway ([message='Bad Gateway'], [options])
returns an HTTP status code of 502
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.badGateway('mongo error');
// essentially generates
{
statusCode: 502,
message: 'mongo error'
}
`fumble.http.serviceUnavailable ([message='Service Unavailable'], [options])
returns an HTTP status code of 503
message
- optional message string.options
- extra optionsoptions.debug
- additional error debug info set toerror.debug
property.
fumble.http.serviceUnavailable('feeds are down');
// essentially generates
{
statusCode: 503,
message: 'feeds are down'
}
License
This software is free to use under the Yahoo Inc. BSD license. See the LICENSE file for license text and copyright information.