UNPKG

divvy-rest

Version:

A RESTful API for submitting payments and monitoring accounts on the Divvy network.

90 lines (82 loc) 2.84 kB
/* eslint-disable valid-jsdoc */ 'use strict'; var _ = require('lodash'); var divvy = require('divvy-lib'); /** * Used to hold methods defined by caller to customize transaction submit */ function SubmitTransactionHooks(hooks) { this.hooks = hooks; } /** * Used to override default transaction initialization (Optional) * * @param {Function} async_callback * * @callback * @param {Error} error * @param {Transaction} transaction - Transaction object that is used to * submit requests to divvy */ SubmitTransactionHooks.prototype.initializeTransaction = function(async_callback) { // Transactions are normally constructed with remote.transaction(). // However, if the caller wants to override this behavior and provide // their own transaction object, they can do so by passing in // hooks.initializeTransaction and pass their transaction through // the callback if (_.isFunction(this.hooks.initializeTransaction)) { return this.hooks.initializeTransaction(async_callback); } async_callback(null, new divvy.Transaction()); }; /** * Used to validate request parameters asyncronously * * @param {Function} async_callback * * @callback * @param {Error} error */ SubmitTransactionHooks.prototype.validateParams = function(async_callback) { if (this.hooks.validateParams) { this.hooks.validateParams(async_callback); } else { async_callback(); } }; /** * Used to format messages received from divvy-lib which will be * returned to client * * @param {Object} message - Response object from divvy * @param {Object} meta - Object that holds metadata about the transaction * @param {String} meta.hash - Hash of the transaction * @param {String} meta.ledger - Ledger sequence that the transaction * is being considered for * @param {String "validated"|"pending"} meta.validated - String that holds * whether transaction is validated * @param {Function} async_callback * * @callback * @param {Error} error * @param {Object} result - Object that is returned to the client */ SubmitTransactionHooks.prototype.formatTransactionResponse = function( message, meta, async_callback, waitForValidated) { this.hooks.formatTransactionResponse(message, meta, async_callback, waitForValidated); }; /** * Used to set appropriate parameters on transaction * * @param {Transaction} transaction - Transaction object that is used to * submit requests to divvy * * @returns undefined */ SubmitTransactionHooks.prototype.setTransactionParameters = function(transaction) { this.hooks.setTransactionParameters(transaction); }; module.exports = SubmitTransactionHooks;