test-triam-base-contract
Version:
Low level triam smart cotnract support library
151 lines (139 loc) • 4.42 kB
JavaScript
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
};