Launch Week Day 2: Introducing Reports: An Extensible Reporting Framework for Socket Data.Learn More
Socket
Book a DemoSign in
Socket

sails-hook-responders

Package Overview
Dependencies
Maintainers
2
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sails-hook-responders

Sails hook for response policies, or responders

latest
Source
npmnpm
Version
0.2.0
Version published
Maintainers
2
Created
Source

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 :heart: by Postman

Keywords

sails

FAQs

Package last updated on 23 Dec 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts