From d257f8b635ba81182f206d44af52ad1b9e0a7e19 Mon Sep 17 00:00:00 2001 From: Blockchain Federal Argentina <bfa@baby-01.net-internal-1> Date: Wed, 10 Jul 2019 12:54:16 -0300 Subject: [PATCH] Cambios API --- .gitignore | 2 ++ api/src/StamperWrapper.js | 48 +++++++++++++++++++++++++++++++++++---- api/src/index.js | 17 ++++++++++++++ 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 042d298..36faf9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ 847e7d6ea18a417496518dc90b547438bf1b3d05.json +api/nohup.out +www diff --git a/api/src/StamperWrapper.js b/api/src/StamperWrapper.js index 17760c7..11c923d 100644 --- a/api/src/StamperWrapper.js +++ b/api/src/StamperWrapper.js @@ -75,6 +75,38 @@ class Stamper { }) } + async wait1block() { + return new Promise((resolve, reject) => { + let max = 10; + let web3 = this.web3; + web3.eth.getBlockNumber() + .then( + (startnum) => { + setTimeout( + function nextblock() + { + web3.eth.getBlockNumber() + .then( + (nownum) => { + if ( nownum != startnum ) + resolve( nownum ); + else + if ( max-- > 0 ) + setTimeout( nextblock, 500 ) + else + reject( 'Timeout. Tal vez no esta sincronizado el nodo local' ) + }, + reject + ) + }, + 500 + ) + }, + (errtxt) => { reject('No conseguimos el blockNumber.\n'+errtxt) } + ) + }) + } + async verify(hash) { try { let count = await this.contract.methods.getObjectCount(hash).call() @@ -85,10 +117,16 @@ class Stamper { var stamps = [] for (var i = 0; i < count; i++) { - let stampPos = await this.contract.methods.getObjectPos(hash, i).call() - let stamp = await this.contract.methods.getStamplistPos(stampPos).call() - - stamps.push({ stamper: stamp[1], block: stamp[2].toString() }) + let stampPos = await this.contract.methods.getObjectPos(hash, i).call() + let stamp = await this.contract.methods.getStamplistPos(stampPos).call() + let whostamped = stamp[1]; + let blockno = stamp[2]; + let block = await this.web3.eth.getBlock( blockno ); + stamps.push({ + whostamped: whostamped, + blocknumber: blockno.toString(), + blocktimestamp: block.timestamp + }); } console.log(`exito verificación ${hash}`) @@ -100,4 +138,4 @@ class Stamper { } } -export default Stamper \ No newline at end of file +export default Stamper diff --git a/api/src/index.js b/api/src/index.js index 39cf609..f728ff9 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -102,6 +102,23 @@ if (process.env.API_USER && process.env.API_PASS) { /***************************************************/ // API Endpoints /***************************************************/ +app.get('/wait1block', async (req, res) => { + let ss = new Stamper(web3, contractAbi, contractAddress) + + try { + let blockno = await ss.wait1block() + return res.json( + { + success: true, + blocknumber: blockno + } + ) + } catch (e) { + console.error( e ) + res.status( 500 ) + res.send( e ) + } +}) app.post('/stamp', async (req, res) => { let ss = new Stamper(web3, contractAbi, contractAddress) -- GitLab