Skip to content

Commit

Permalink
[FEATURE] Remote.prototype.requestOffer
Browse files Browse the repository at this point in the history
See: https://ripple.com/build/rippled-apis/#ledger-entry

Rippled request
```js
{
  "id": 1,
  "command": "ledger_entry",
  "type": "offer",
  "offer": {"account": "rEQWVz1qN4DWw5J17s3DgXQzUuVYDSpK6M", "seq":5 },
  "ledger_index": 10850610
}
```

Response
```js
{
  "id": 7,
  "status": "success",
  "type": "response",
  "result": {
    "index": "F9DCCD26C770952D216085BF97D7E225F6A8B578ABD066AA92D7D06144B535EE",
    "ledger_index": 10850610,
    "node": {
      "Account": "rEQWVz1qN4DWw5J17s3DgXQzUuVYDSpK6M",
      "BookDirectory": "CF8D13399C6ED20BA82740CFA78E928DC8D498255249BA6351038D7EA4C68000",
      "BookNode": "0000000000000000",
      "Flags": 131072,
      "LedgerEntryType": "Offer",
      "OwnerNode": "0000000000000000",
      "PreviousTxnID": "64FAB660F9F5D9E7183E977701930AD09F372129C56E1685B68A914D8A43CA41",
      "PreviousTxnLgrSeq": 10850602,
      "Sequence": 5,
      "TakerGets": "1000000",
      "TakerPays": {
        "currency": "USD",
        "issuer": "rMwjYedjc7qqtKYVLiAccJSmCwih4LnE2q",
        "value": "100"
      },
      "index": "F9DCCD26C770952D216085BF97D7E225F6A8B578ABD066AA92D7D06144B535EE"
    },
    "validated": false
  }
}
```
  • Loading branch information
Alan Cohen committed Jan 21, 2015
1 parent 55cd13e commit 98f40ab
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/js/ripple/remote.js
Original file line number Diff line number Diff line change
Expand Up @@ -2159,6 +2159,44 @@ Remote.prototype.dirtyAccountRoot = function(account) {
delete this.ledgers.current.account_root[account];
};

/**
* Get an Offer from the ledger
*
* @param {Object} options
* @param {String|Number} options.ledger
* @param {String} [options.account] - Required unless using options.index
* @param {Number} [options.sequence] - Required unless using options.index
* @param {String} [options.index] - Required only if options.account and options.sequence not provided
*
* @callback
* @param {Error} error
* @param {Object} message
*
* @return {Request}
*/

Remote.prototype.requestOffer = function(options, callback) {

var request = this.requestLedgerEntry('offer');

if (options.account && options.sequence) {
request.offerId(options.account, options.sequence);
} else if (options.index) {
request.offerIndex(options.index);
}

request.ledgerSelect(options.ledger);

request.once('success', function(res) {
request.emit('offer',res);
});

request.callback(callback, 'offer');

return request;
};


/**
* Get an account's balance
*
Expand Down
28 changes: 28 additions & 0 deletions test/remote-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -838,5 +838,33 @@ describe('Remote', function () {
assert.strictEqual(request.message.account_root, ADDRESS);
assert.strictEqual(request.message.ledger_index, 'validated');
});

it('request offer with ledger index', function() {
var request = remote.requestOffer({account: ADDRESS, ledger: LEDGER_INDEX, sequence: 5});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer.account, ADDRESS);
assert.strictEqual(request.message.offer.seq, 5);
assert.strictEqual(request.message.ledger_index, LEDGER_INDEX);
});
it('request offer with ledger hash', function() {
var request = remote.requestOffer({account: ADDRESS, ledger: LEDGER_HASH, sequence: 5});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer.account, ADDRESS);
assert.strictEqual(request.message.offer.seq, 5);
assert.strictEqual(request.message.ledger_hash, LEDGER_HASH);
});
it('request account balance with ledger identifier', function() {
var request = remote.requestOffer({account: ADDRESS, ledger: 'validated', sequence: 5});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer.account, ADDRESS);
assert.strictEqual(request.message.offer.seq, 5);
assert.strictEqual(request.message.ledger_index, 'validated');
});
it('request account balance with offer index', function() {
var request = remote.requestOffer({ index: TRANSACTION_HASH, ledger: LEDGER_INDEX});
assert.strictEqual(request.message.command, 'ledger_entry');
assert.strictEqual(request.message.offer, TRANSACTION_HASH);
assert.strictEqual(request.message.ledger_index, LEDGER_INDEX);
});
});
});

0 comments on commit 98f40ab

Please sign in to comment.