From 86ff315ef2a39dfdc2ce97e0e1c4aa73f04e363b Mon Sep 17 00:00:00 2001 From: Chris Clark Date: Fri, 4 Dec 2015 13:33:40 -0800 Subject: [PATCH] Fix parsing of quality for getTrustlines --- src/ledger/parse/account-trustline.js | 4 ++-- src/ledger/parse/trustline.js | 12 ++---------- src/ledger/parse/utils.js | 8 ++++++++ test/fixtures/responses/get-trustlines-all.json | 3 ++- test/fixtures/rippled/account-lines.js | 2 +- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/ledger/parse/account-trustline.js b/src/ledger/parse/account-trustline.js index cb8281be..ace9ea0b 100644 --- a/src/ledger/parse/account-trustline.js +++ b/src/ledger/parse/account-trustline.js @@ -24,8 +24,8 @@ function parseAccountTrustline(trustline: Trustline): AccountTrustline { limit: trustline.limit, currency: trustline.currency, counterparty: trustline.account, - qualityIn: trustline.quality_in || undefined, - qualityOut: trustline.quality_out || undefined, + qualityIn: utils.parseQuality(trustline.quality_in) || undefined, + qualityOut: utils.parseQuality(trustline.quality_out) || undefined, ripplingDisabled: trustline.no_ripple || undefined, frozen: trustline.freeze || undefined, authorized: trustline.authorized || undefined diff --git a/src/ledger/parse/trustline.js b/src/ledger/parse/trustline.js index fbdb1a65..799692a1 100644 --- a/src/ledger/parse/trustline.js +++ b/src/ledger/parse/trustline.js @@ -3,7 +3,6 @@ const assert = require('assert'); const utils = require('./utils'); const flags = utils.txFlags.TrustSet; -const BigNumber = require('bignumber.js'); function parseFlag(flagsValue, trueValue, falseValue) { if (flagsValue & trueValue) { @@ -15,13 +14,6 @@ function parseFlag(flagsValue, trueValue, falseValue) { return undefined; } -function parseQuality(quality?: number) { - if (typeof quality === 'number') { - return (new BigNumber(quality)).shift(-9).toNumber(); - } - return undefined; -} - function parseTrustline(tx: Object): Object { assert(tx.TransactionType === 'TrustSet'); @@ -29,8 +21,8 @@ function parseTrustline(tx: Object): Object { limit: tx.LimitAmount.value, currency: tx.LimitAmount.currency, counterparty: tx.LimitAmount.issuer, - qualityIn: parseQuality(tx.QualityIn), - qualityOut: parseQuality(tx.QualityOut), + qualityIn: utils.parseQuality(tx.QualityIn), + qualityOut: utils.parseQuality(tx.QualityOut), ripplingDisabled: parseFlag( tx.Flags, flags.SetNoRipple, flags.ClearNoRipple), frozen: parseFlag(tx.Flags, flags.SetFreeze, flags.ClearFreeze), diff --git a/src/ledger/parse/utils.js b/src/ledger/parse/utils.js index 4df0952b..8177d94a 100644 --- a/src/ledger/parse/utils.js +++ b/src/ledger/parse/utils.js @@ -17,6 +17,13 @@ function adjustQualityForXRP( (new BigNumber(quality)).shift(shift).toString(); } +function parseQuality(quality: ?number) { + if (typeof quality === 'number') { + return (new BigNumber(quality)).shift(-9).toNumber(); + } + return undefined; +} + function parseTimestamp(rippleTime: number): string | void { return rippleTime ? utils.common.rippleTimeToISO8601(rippleTime) : undefined; } @@ -80,6 +87,7 @@ function parseMemos(tx: Object): ?Array { } module.exports = { + parseQuality, parseOutcome, parseMemos, hexToString, diff --git a/test/fixtures/responses/get-trustlines-all.json b/test/fixtures/responses/get-trustlines-all.json index 407898e5..2ce58fbf 100644 --- a/test/fixtures/responses/get-trustlines-all.json +++ b/test/fixtures/responses/get-trustlines-all.json @@ -3,7 +3,8 @@ "specification": { "limit": "0", "currency": "ASP", - "counterparty": "r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z" + "counterparty": "r3vi7mWxru9rJCxETCyA1CHvzL96eZWx5z", + "qualityIn": 1 }, "counterparty": { "limit": "10" diff --git a/test/fixtures/rippled/account-lines.js b/test/fixtures/rippled/account-lines.js index 31b87037..fa5cf417 100644 --- a/test/fixtures/rippled/account-lines.js +++ b/test/fixtures/rippled/account-lines.js @@ -22,7 +22,7 @@ module.exports.normal = function(request, options = {}) { currency: 'ASP', limit: '0', limit_peer: '10', - quality_in: 0, + quality_in: 1000000000, quality_out: 0 }, {