GithubHelp home page GithubHelp logo

isabella232 / sails-hook-responders Goto Github PK

View Code? Open in Web Editor NEW

This project forked from postmanlabs/sails-hook-responders

0.0 0.0 0.0 42 KB

An installable sailsjs hook that adds policies, called responders, to a request

License: Apache License 2.0

JavaScript 82.89% Shell 17.11%

sails-hook-responders's Introduction

sails-hook-responders

This is a installable sailsjs hook that attaches policy like methods, called responders, to controller actions.

Installation

npm install sails-hook-responders --save

Usage

Create your responders, in api/responders, with the signature

/**
 * Create users API token and add it to the response
 *
 * @param  {Object}   req     The request object
 * @param  {Object}   res     The response object
 * @param  {Object}   data    Data for the request. Global to all responders
 * @param  {Object}   options Response options, include what kind of response to send. Global to all responders
 * @param  {Function} next    [description]
 */
module.exports = function (req, res, data, options, next) {
  // Do something
  // Add any data you want sent back to the user to data object
  // For example,
  // data.response = 'Hi, this message was generated in a responder';
  // Set the type of response you want to be used
  // options.method = 'ok';
  // options is optional. By default it is set to `serverError` if there was an error,
  // else to `json`
  // If there is an error, call next with the error
  // next(err);
  var token;

  // Generate token

  data.token = token;
  next();
};

Map responders to controller actions in config/responders.js

/**
 * Mapping responders to a controller action
 * @type {Object}
 */
module.exports.responders = {
  UserController: {
    // responders should be put in an array, in the order they are meant to be run
    create: ['generateApiToken', 'sendWelcomeEmail'],
    // though if you only have one responder for an action, you can just use a string
    delete: 'sendGoodbyeEmail'
  },
  ...
  ...
};

Return the responder in your controller action

A method, respond, is attached to the res object. It runs all the responders attached to a controller action and sends the response back to the user. If no responder has been attached, it will simply return res.ok

/**
 * User controller
 */

/**
 * The user controller
 * @type {Object}
 */
module.exports = {
  create: function (req, res) {
    // create user
    var data = {
      id: user.id,
      name: user.name
    };

    // options is optional, and so is data
    return res.respond(data);
  },

  delete: function (req, res) {
    // delete the user
    var data = {
        id: deletedUser.id
        name: deletedUser.name,
        message: 'Sorry to see you go ' + deletedUser.name
      };

    // You can pass a custom callback to `res.respond`, which will be called after the responders have been run
    return res.respond(data, function (err, req, res, data, options) {
      return res.view('user/goodbye', data);
    });
  },
  ...
  ...
};

This project is licensed under the Apache 2.0 License.

For contributing, please check the contributing guidelines.

Made with ❤️ by Postman

sails-hook-responders's People

Contributors

elssar avatar shamasis 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.