divvy-rest
Version:
A RESTful API for submitting payments and monitoring accounts on the Divvy network.
90 lines (82 loc) • 2.84 kB
JavaScript
/* eslint-disable valid-jsdoc */
;
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;