Skip to content

Commit 98f40ab

Browse files
author
Alan Cohen
committed
[FEATURE] Remote.prototype.requestOffer
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 } } ```
1 parent 55cd13e commit 98f40ab

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

src/js/ripple/remote.js

+38
Original file line numberDiff line numberDiff line change
@@ -2159,6 +2159,44 @@ Remote.prototype.dirtyAccountRoot = function(account) {
21592159
delete this.ledgers.current.account_root[account];
21602160
};
21612161

2162+
/**
2163+
* Get an Offer from the ledger
2164+
*
2165+
* @param {Object} options
2166+
* @param {String|Number} options.ledger
2167+
* @param {String} [options.account] - Required unless using options.index
2168+
* @param {Number} [options.sequence] - Required unless using options.index
2169+
* @param {String} [options.index] - Required only if options.account and options.sequence not provided
2170+
*
2171+
* @callback
2172+
* @param {Error} error
2173+
* @param {Object} message
2174+
*
2175+
* @return {Request}
2176+
*/
2177+
2178+
Remote.prototype.requestOffer = function(options, callback) {
2179+
2180+
var request = this.requestLedgerEntry('offer');
2181+
2182+
if (options.account && options.sequence) {
2183+
request.offerId(options.account, options.sequence);
2184+
} else if (options.index) {
2185+
request.offerIndex(options.index);
2186+
}
2187+
2188+
request.ledgerSelect(options.ledger);
2189+
2190+
request.once('success', function(res) {
2191+
request.emit('offer',res);
2192+
});
2193+
2194+
request.callback(callback, 'offer');
2195+
2196+
return request;
2197+
};
2198+
2199+
21622200
/**
21632201
* Get an account's balance
21642202
*

test/remote-test.js

+28
Original file line numberDiff line numberDiff line change
@@ -838,5 +838,33 @@ describe('Remote', function () {
838838
assert.strictEqual(request.message.account_root, ADDRESS);
839839
assert.strictEqual(request.message.ledger_index, 'validated');
840840
});
841+
842+
it('request offer with ledger index', function() {
843+
var request = remote.requestOffer({account: ADDRESS, ledger: LEDGER_INDEX, sequence: 5});
844+
assert.strictEqual(request.message.command, 'ledger_entry');
845+
assert.strictEqual(request.message.offer.account, ADDRESS);
846+
assert.strictEqual(request.message.offer.seq, 5);
847+
assert.strictEqual(request.message.ledger_index, LEDGER_INDEX);
848+
});
849+
it('request offer with ledger hash', function() {
850+
var request = remote.requestOffer({account: ADDRESS, ledger: LEDGER_HASH, sequence: 5});
851+
assert.strictEqual(request.message.command, 'ledger_entry');
852+
assert.strictEqual(request.message.offer.account, ADDRESS);
853+
assert.strictEqual(request.message.offer.seq, 5);
854+
assert.strictEqual(request.message.ledger_hash, LEDGER_HASH);
855+
});
856+
it('request account balance with ledger identifier', function() {
857+
var request = remote.requestOffer({account: ADDRESS, ledger: 'validated', sequence: 5});
858+
assert.strictEqual(request.message.command, 'ledger_entry');
859+
assert.strictEqual(request.message.offer.account, ADDRESS);
860+
assert.strictEqual(request.message.offer.seq, 5);
861+
assert.strictEqual(request.message.ledger_index, 'validated');
862+
});
863+
it('request account balance with offer index', function() {
864+
var request = remote.requestOffer({ index: TRANSACTION_HASH, ledger: LEDGER_INDEX});
865+
assert.strictEqual(request.message.command, 'ledger_entry');
866+
assert.strictEqual(request.message.offer, TRANSACTION_HASH);
867+
assert.strictEqual(request.message.ledger_index, LEDGER_INDEX);
868+
});
841869
});
842870
});

0 commit comments

Comments
 (0)