[TASK] consolidate accountRequest and pagingAccountRequest

update `requestAccountCurrencies` and  `requestAccountInfo`
This commit is contained in:
Geert Weening
2014-11-07 09:52:17 -08:00
parent ed018282c4
commit e42e67e259
2 changed files with 37 additions and 61 deletions

View File

@@ -1198,48 +1198,14 @@ Remote.prototype.requestTx = function(hash, callback) {
}; };
/** /**
* Account request abstraction * Account Request
* *
* @this Remote * Optional paging with limit and marker options
* @api private * supported in rippled for 'account_lines' and 'account_offers'
*/
Remote.accountRequest = function(type, account, ledger, peer, callback) {
if (typeof account === 'object') {
var options = account;
callback = ledger;
ledger = options.ledger;
account = options.account || options.accountID;
peer = options.peer;
}
var lastArg = arguments[arguments.length - 1];
if (typeof lastArg === 'function') {
callback = lastArg;
}
var request = new Request(this, type);
var account = UInt160.json_rewrite(account);
request.message.account = account;
request.ledgerSelect(ledger);
if (UInt160.is_valid(peer)) {
request.message.peer = UInt160.json_rewrite(peer);
}
request.callback(callback);
return request;
};
/**
* Account Request for paging request
* *
* @param {String} type - request name, e.g. 'account_lines' * @param {String} type - request name, e.g. 'account_lines'
* @param {String} account - ripple address * @param {String} account - ripple address
* @param {Object} options * @param {Object} options - all optional
* @param {String} peer - ripple address * @param {String} peer - ripple address
* @param [String|Number] ledger identifier * @param [String|Number] ledger identifier
* @param [Number] limit - max results per response * @param [Number] limit - max results per response
@@ -1247,7 +1213,7 @@ Remote.accountRequest = function(type, account, ledger, peer, callback) {
* @param [Function] callback * @param [Function] callback
* @return {Request} * @return {Request}
*/ */
Remote.pagingAccountRequest = function(type, account, options, callback) { Remote.accountRequest = function(type, account, options, callback) {
var ledger, peer, limit, marker; var ledger, peer, limit, marker;
if (typeof options === 'object') { if (typeof options === 'object') {
@@ -1301,13 +1267,15 @@ Remote.pagingAccountRequest = function(type, account, options, callback) {
/** /**
* Request account_info * Request account_info
* *
* @param {String} ripple address * @param {String} account - ripple address
* @param [String|Number] ledger identifier * @param {Object} options
* @param {String} peer - ripple address
* @param [String|Number] ledger identifier
* @param [Function] callback * @param [Function] callback
* @return {Request} * @return {Request}
*/ */
Remote.prototype.requestAccountInfo = function(account, callback) { Remote.prototype.requestAccountInfo = function(account, options, callback) {
var args = Array.prototype.concat.apply(['account_info'], arguments); var args = Array.prototype.concat.apply(['account_info'], arguments);
return Remote.accountRequest.apply(this, args); return Remote.accountRequest.apply(this, args);
}; };
@@ -1315,13 +1283,15 @@ Remote.prototype.requestAccountInfo = function(account, callback) {
/** /**
* Request account_currencies * Request account_currencies
* *
* @param {String} ripple address * @param {String} account - ripple address
* @param [String|Number] ledger identifier * @param {Object} options
* @param {String} peer - ripple address
* @param [String|Number] ledger identifier
* @param [Function] callback * @param [Function] callback
* @return {Request} * @return {Request}
*/ */
Remote.prototype.requestAccountCurrencies = function(account, callback) { Remote.prototype.requestAccountCurrencies = function(account, options, callback) {
var args = Array.prototype.concat.apply(['account_currencies'], arguments); var args = Array.prototype.concat.apply(['account_currencies'], arguments);
return Remote.accountRequest.apply(this, args); return Remote.accountRequest.apply(this, args);
}; };
@@ -1343,7 +1313,7 @@ Remote.prototype.requestAccountLines = function(account, options, callback) {
// XXX Does this require the server to be trusted? // XXX Does this require the server to be trusted?
//utils.assert(this.trusted); //utils.assert(this.trusted);
var args = Array.prototype.concat.apply(['account_lines'], arguments); var args = Array.prototype.concat.apply(['account_lines'], arguments);
return Remote.pagingAccountRequest.apply(this, args); return Remote.accountRequest.apply(this, args);
}; };
/** /**
@@ -1360,7 +1330,7 @@ Remote.prototype.requestAccountLines = function(account, options, callback) {
Remote.prototype.requestAccountOffers = function(account, options, callback) { Remote.prototype.requestAccountOffers = function(account, options, callback) {
var args = Array.prototype.concat.apply(['account_offers'], arguments); var args = Array.prototype.concat.apply(['account_offers'], arguments);
return Remote.pagingAccountRequest.apply(this, args); return Remote.accountRequest.apply(this, args);
}; };
/** /**

View File

@@ -185,20 +185,26 @@ describe('Remote', function () {
assert(request instanceof Request); assert(request instanceof Request);
}); });
it('request account currencies with ledger index', function() {
var request = remote.requestAccountCurrencies('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS');
assert.strictEqual(request.message.command, 'account_currencies');
assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS');
});
it('request account info with ledger index', function() { it('request account info with ledger index', function() {
var request = remote.requestAccountInfo('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', 9592219); var request = remote.requestAccountInfo('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {ledger: 9592219});
assert.strictEqual(request.message.command, 'account_info'); assert.strictEqual(request.message.command, 'account_info');
assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS'); assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS');
assert.strictEqual(request.message.ledger_index, 9592219); assert.strictEqual(request.message.ledger_index, 9592219);
}); });
it('request account info with ledger hash', function() { it('request account info with ledger hash', function() {
var request = remote.requestAccountInfo('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE'); var request = remote.requestAccountInfo('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {ledger: 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE'});
assert.strictEqual(request.message.command, 'account_info'); assert.strictEqual(request.message.command, 'account_info');
assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS'); assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS');
assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE'); assert.strictEqual(request.message.ledger_hash, 'B4FD84A73DBD8F0DA9E320D137176EBFED969691DC0AAC7882B76B595A0841AE');
}); });
it('request account info with ledger identifier', function() { it('request account info with ledger identifier', function() {
var request = remote.requestAccountInfo('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', 'validated'); var request = remote.requestAccountInfo('r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {ledger: 'validated'});
assert.strictEqual(request.message.command, 'account_info'); assert.strictEqual(request.message.command, 'account_info');
assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS'); assert.strictEqual(request.message.account, 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS');
assert.strictEqual(request.message.ledger_index, 'validated'); assert.strictEqual(request.message.ledger_index, 'validated');
@@ -225,7 +231,7 @@ describe('Remote', function () {
}); });
it('pagingAccountRequest', function() { it('pagingAccountRequest', function() {
var request = Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS'); var request = Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS');
assert.deepEqual(request.message, { assert.deepEqual(request.message, {
command: 'account_lines', command: 'account_lines',
id: undefined, id: undefined,
@@ -234,7 +240,7 @@ describe('Remote', function () {
}); });
it('pagingAccountRequest - limit', function() { it('pagingAccountRequest - limit', function() {
var request = Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 100}); var request = Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 100});
assert.deepEqual(request.message, { assert.deepEqual(request.message, {
command: 'account_lines', command: 'account_lines',
id: undefined, id: undefined,
@@ -244,7 +250,7 @@ describe('Remote', function () {
}); });
it('pagingAccountRequest - limit, marker', function() { it('pagingAccountRequest - limit, marker', function() {
var request = Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 100, marker: '29F992CC252056BF690107D1E8F2D9FBAFF29FF107B62B1D1F4E4E11ADF2CC73'}); var request = Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 100, marker: '29F992CC252056BF690107D1E8F2D9FBAFF29FF107B62B1D1F4E4E11ADF2CC73'});
assert.deepEqual(request.message, { assert.deepEqual(request.message, {
command: 'account_lines', command: 'account_lines',
id: undefined, id: undefined,
@@ -257,17 +263,17 @@ describe('Remote', function () {
}); });
it('pagingAccountRequest - limit min', function() { it('pagingAccountRequest - limit min', function() {
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 0}).message.limit, 0); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 0}).message.limit, 0);
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: -1}).message.limit, 0); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: -1}).message.limit, 0);
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: -1e9}).message.limit, 0); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: -1e9}).message.limit, 0);
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: -1e24}).message.limit, 0); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: -1e24}).message.limit, 0);
}); });
it('pagingAccountRequest - limit max', function() { it('pagingAccountRequest - limit max', function() {
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e9}).message.limit, 1e9); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e9}).message.limit, 1e9);
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e9+1}).message.limit, 1e9); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e9+1}).message.limit, 1e9);
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e10}).message.limit, 1e9); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e10}).message.limit, 1e9);
assert.strictEqual(Remote.pagingAccountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e24}).message.limit, 1e9); assert.strictEqual(Remote.accountRequest('account_lines', 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS', {limit: 1e24}).message.limit, 1e9);
}); });
it('requestAccountLines, account and callback', function() { it('requestAccountLines, account and callback', function() {