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