From bf2df87fb17eff1979b9a18a7ec6086a0c2c7870 Mon Sep 17 00:00:00 2001 From: Nicolas Wagner Date: Tue, 25 Sep 2018 16:03:54 +0300 Subject: [PATCH 1/2] [feat] get meta-evidence uri --- .../implementations/arbitrable/Arbitrable.js | 11 +---------- .../arbitrable/MultipleArbitrableTransaction.js | 3 ++- tests/integration/contracts.test.js | 1 + 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/contracts/implementations/arbitrable/Arbitrable.js b/src/contracts/implementations/arbitrable/Arbitrable.js index 063bdf0..72f7678 100644 --- a/src/contracts/implementations/arbitrable/Arbitrable.js +++ b/src/contracts/implementations/arbitrable/Arbitrable.js @@ -40,16 +40,7 @@ class Arbitrable extends ContractImplementation { if (!metaEvidenceLog[0]) return {} // NOTE better to throw errors for missing meta-evidence? - const metaEvidenceUri = metaEvidenceLog[0].args._evidence - // FIXME caching issue need a query param to fetch from AWS - const metaEvidenceResponse = await httpRequest('GET', metaEvidenceUri) - - if (metaEvidenceResponse.status >= 400) - throw new Error(`Unable to fetch meta-evidence at ${metaEvidenceUri}`) - - this.metaEvidenceCache[this.contractAddress] = - metaEvidenceResponse.body || metaEvidenceResponse - return metaEvidenceResponse.body || metaEvidenceResponse + return metaEvidenceLog[0].args._evidence } /** diff --git a/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js b/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js index 5b64837..4911c54 100644 --- a/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js +++ b/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js @@ -342,7 +342,8 @@ class MultipleArbitrableTransaction extends Arbitrable { sellerFee: this._Web3Wrapper.fromWei(arbitrableTransaction[7], 'ether'), buyerFee: this._Web3Wrapper.fromWei(arbitrableTransaction[8], 'ether'), lastInteraction: arbitrableTransaction[9].toNumber(), - status: arbitrableTransaction[10].toNumber() + status: arbitrableTransaction[10].toNumber(), + metaEvidenceUri: await this.getMetaEvidence(arbitrableTransactionId) } } } diff --git a/tests/integration/contracts.test.js b/tests/integration/contracts.test.js index 949a93a..f573a37 100644 --- a/tests/integration/contracts.test.js +++ b/tests/integration/contracts.test.js @@ -183,6 +183,7 @@ describe('Contracts', () => { expect(transactionArbitrable0.buyerFee).toEqual(0) expect(transactionArbitrable0.lastInteraction).toBeDefined() expect(transactionArbitrable0.status).toEqual(0) + expect(transactionArbitrable0.metaEvidenceUri).toEqual(arbitrableContractData.metaEvidenceUri) }, 10000 ) From 48f68f7913d97c05056e1621bcc1e901b0c3d814 Mon Sep 17 00:00:00 2001 From: Nicolas Wagner Date: Tue, 25 Sep 2018 20:56:33 +0300 Subject: [PATCH 2/2] [fix] get meta-evidence uri --- .../implementations/arbitrable/Arbitrable.js | 15 ++++++++++++--- .../arbitrable/MultipleArbitrableTransaction.js | 6 +----- tests/integration/contracts.test.js | 1 - 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/contracts/implementations/arbitrable/Arbitrable.js b/src/contracts/implementations/arbitrable/Arbitrable.js index 72f7678..843e72a 100644 --- a/src/contracts/implementations/arbitrable/Arbitrable.js +++ b/src/contracts/implementations/arbitrable/Arbitrable.js @@ -27,8 +27,8 @@ class Arbitrable extends ContractImplementation { * @returns {object} The metaEvidence object */ getMetaEvidence = async (metaEvidenceID = 0) => { - if (this.metaEvidenceCache[this.contractAddress]) - return this.metaEvidenceCache[this.contractAddress] + if (this.metaEvidenceCache[metaEvidenceID]) + return this.metaEvidenceCache[metaEvidenceID] const metaEvidenceLog = await EventListener.getEventLogs( this, @@ -40,7 +40,16 @@ class Arbitrable extends ContractImplementation { if (!metaEvidenceLog[0]) return {} // NOTE better to throw errors for missing meta-evidence? - return metaEvidenceLog[0].args._evidence + const metaEvidenceUri = metaEvidenceLog[0].args._evidence + // FIXME caching issue need a query param to fetch from AWS + const metaEvidenceResponse = await httpRequest('GET', metaEvidenceUri) + + if (metaEvidenceResponse.status >= 400) + throw new Error(`Unable to fetch meta-evidence at ${metaEvidenceUri}`) + + this.metaEvidenceCache[metaEvidenceID] = + metaEvidenceResponse.body || metaEvidenceResponse + return metaEvidenceResponse.body || metaEvidenceResponse } /** diff --git a/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js b/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js index 4911c54..2698ab0 100644 --- a/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js +++ b/src/contracts/implementations/arbitrable/MultipleArbitrableTransaction.js @@ -87,11 +87,7 @@ class MultipleArbitrableTransaction extends Arbitrable { * @param {amount} amount - Part or all of the amount of the good or the service. * @returns {object} - The result transaction object. */ - pay = async ( - account, - arbitrableTransactionId, - amount - ) => { + pay = async (account, arbitrableTransactionId, amount) => { await this.loadContract() try { diff --git a/tests/integration/contracts.test.js b/tests/integration/contracts.test.js index f573a37..949a93a 100644 --- a/tests/integration/contracts.test.js +++ b/tests/integration/contracts.test.js @@ -183,7 +183,6 @@ describe('Contracts', () => { expect(transactionArbitrable0.buyerFee).toEqual(0) expect(transactionArbitrable0.lastInteraction).toBeDefined() expect(transactionArbitrable0.status).toEqual(0) - expect(transactionArbitrable0.metaEvidenceUri).toEqual(arbitrableContractData.metaEvidenceUri) }, 10000 )