UNPKG

test-triam-base-contract

Version:

Low level triam smart cotnract support library

151 lines (139 loc) 4.42 kB
const http = require ('http'); const getBalance = function (_account) { return new Promise ((resolve, reject) => { http.get (`http://${process.env['HOST']}:${process.env['PORT']}/balance?id=${_account}`, function (res) { const {statusCode} = res; const contentType = res.headers['content-type']; let error; if (statusCode !== 200) { error = new Error ('Request Failed.\n' + `Status Code: ${statusCode}`); } else if (!/^application\/json/.test (contentType)) { error = new Error ('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); } if (error) { res.resume (); return; } res.setEncoding ('utf8'); let rawData = ''; res.on ('data', function (chunk) { rawData += chunk; }); res.on ('end', function () { try { const parsedData = JSON.parse (rawData); resolve (parsedData); } catch (e) { reject (e.message); } }); }); }); }; const getLedgerSeq = function () { return new Promise ((resolve, reject) => { http.get (`http://${process.env['HOST']}:${process.env['PORT']}/ledger`, function (res) { const {statusCode} = res; const contentType = res.headers['content-type']; let error; if (statusCode !== 200) { error = new Error ('Request Failed.\n' + `Status Code: ${statusCode}`); } else if (!/^application\/json/.test (contentType)) { error = new Error ('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); } if (error) { res.resume (); return; } res.setEncoding ('utf8'); let rawData = ''; res.on ('data', function (chunk) { rawData += chunk; }); res.on ('end', function () { try { const parsedData = JSON.parse (rawData); resolve (parsedData); } catch (e) { reject (e.message); } }); }); }); }; const getState = function (_account) { return new Promise ((resolve, reject) => { http.get (`http://${process.env['HOST']}:${process.env['PORT']}/state?id=${_account}`, function (res) { const {statusCode} = res; const contentType = res.headers['content-type']; let error; if (statusCode !== 200) { error = new Error ('Request Failed.\n' + `Status Code: ${statusCode}`); } else if (!/^application\/json/.test (contentType)) { error = new Error ('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); } if (error) { res.resume (); return; } res.setEncoding ('utf8'); let rawData = ''; res.on ('data', function (chunk) { rawData += chunk; }); res.on ('end', function () { try { const parsedData = JSON.parse (rawData); resolve (parsedData); } catch (e) { reject (e.message); } }); }); }); }; const getBalanceAsset = function (_assetCode,_issuer, _account) { return new Promise ((resolve, reject) => { http.get (`http://${process.env['HOST']}:${process.env['PORT']}/gettrustorbalance?assetcode=${_assetCode}&issuer=${_issuer}&accountid=${_account}`, function (res) { const {statusCode} = res; const contentType = res.headers['content-type']; let error; if (statusCode !== 200) { error = new Error ('Request Failed.\n' + `Status Code: ${statusCode}`); } else if (!/^application\/json/.test (contentType)) { error = new Error ('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); } if (error) { res.resume (); return; } res.setEncoding ('utf8'); let rawData = ''; res.on ('data', function (chunk) { rawData += chunk; }); res.on ('end', function () { try { const parsedData = JSON.parse (rawData); resolve (parsedData); } catch (e) { reject (e.message); } }); }); }); }; module.exports = { getState: getState, getBalance: getBalance, getLedgerSeq: getLedgerSeq, getBalanceAsset: getBalanceAsset };