Giter Club home page Giter Club logo

fumble's Introduction

fumble

npm version Build Status Dependency Status devDependency Status Coverage Status

Join the chat at https://gitter.im/yahoo/fumble

Simple error objects in node. Created specifically to be used with the fetchr library and based on hapi.js' Boom.

eli manning

Usage

var fumble = require('fumble');

var callAndProcess = require('./callAndProcess');

module.exports = require('api').base.service({
    name: 'foo',
    read: function (req, resource, params, context, callback) {
        switch(resource) {
            case this.name: 
                callAndProcess(req, params, context, callback);
                return;
        }
        
        var 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 400
  • message - optional message string.
  • options - extra options
  • options.debug - additional error debug info set to error.debug property.
var 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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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 options
  • options.debug - additional error debug info set to error.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.

fumble's People

Contributors

akshayp avatar gitter-badger avatar koulmomo avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.