diff --git a/package-lock.json b/package-lock.json index 3e110ee..5a580e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1897,8 +1897,7 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", @@ -1906,8 +1905,7 @@ }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -2010,8 +2008,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -2021,7 +2018,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2133,8 +2129,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -2249,7 +2244,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/public/js/funcs.js b/public/js/funcs.js new file mode 100644 index 0000000..1dfa97f --- /dev/null +++ b/public/js/funcs.js @@ -0,0 +1,28 @@ +const client = require('../../server') +const _ = require('lodash') + +let getFloData = (tx) => { + return new Promise((resolve, reject)=>{ + let transaction = _.trim(tx) + try { + return client.getRawTransaction(transaction, 1).then(res=>{ + if (res==undefined) { + return reject(error) + } + return res; + }).then(response=>{ + return resolve(response.floData) + }) + } catch (error) { + return reject(error) + } + }).catch ((error)=>{ + console.error(error); + }) +} + + + +module.exports = { + getFloData +} \ No newline at end of file diff --git a/routes.js b/routes.js index 180e625..696ebe9 100644 --- a/routes.js +++ b/routes.js @@ -5,6 +5,7 @@ const { matchedData } = require('express-validator/filter') const _ = require('lodash'); const client = require('./server.js'); +const funcs = require('./public/js/funcs') var path = require('path') var fs = require('fs'); @@ -85,7 +86,7 @@ router.post('/send-to-blockchain', [ return } - let toaddress = "oXCsMUyX3mLJEdnn8SXoH6gyPW9Jd6kjYu"; + let toaddress = "oSjBiuTE1aFNBjaSGq6UNhU9ddpD2YXdg8"; let amount = 1; try { @@ -105,7 +106,7 @@ router.post('/send-to-blockchain', [ }) -router.get('/fetch-tx-comment', (req, res)=>{ +router.get('/fetch-from-blockchain', (req, res)=>{ res.render('from_flo', { data: {}, errors: {}, @@ -113,4 +114,79 @@ router.get('/fetch-tx-comment', (req, res)=>{ }) }) +router.post('/fetch-from-blockchain', [ + check('job') + .isLength({min:1}) + .withMessage('Invalid job!') + .trim(), + check('floaddr') + .isLength({min:1}) + .withMessage('Invalid FLO addrress!') + .trim() + ], (req, res)=>{ + + const errors = validationResult(req) + console.log(errors.mapped()); + + if(!errors.isEmpty()) { + return res.render('fetch-from-blockchain', { + data: req.body, + errors: errors.mapped(), + title: 'Please correct your errors' + }) + } + + let params = _.pick(req.body, ['job', 'floaddr']) + + if (typeof params.job == undefined || params.job!='flo-comment') { + console.log("Unknown request"); + return; + } + + let floaddr = params.floaddr + + if (floaddr.length<1) { + res.json({error:true, "txnid":null, msg:'FLO address is empty', data:null}) + return + } + + try { + let tx_arr = [] + client.listTransactions().then(lt=>{ + + for (let t = 0; t < lt.length; t++) { + const elem = lt[t]; + if (elem.address==floaddr && elem.category=='send') { + tx_arr.push(elem.txid) + } + } + return tx_arr; + + }).then(tx_arr=>{ + console.log(tx_arr); + let tor_arr = [] + for (const tx in tx_arr) { + let promise = funcs.getFloData(_.trim(tx_arr[tx])) + tor_arr.push(promise) + } + + let msg_arr = [] + Promise.all(tor_arr).then(msgr=>{ + msgr.forEach(op=>{ + msg_arr.push(op) + }) + return msg_arr + }).then(flo_data=>{ + console.log(flo_data); + res.json({error:false, msg:'floData fetching complete', data:flo_data}) + }) + }).catch(e=>{ + console.error(e) + }) + } catch (error) { + console.error(error) + } + +}) + module.exports = router \ No newline at end of file diff --git a/views/from_flo.ejs b/views/from_flo.ejs new file mode 100644 index 0000000..9ea791a --- /dev/null +++ b/views/from_flo.ejs @@ -0,0 +1,118 @@ +<%include partials/header.ejs %> + +