test-triam-base-contract
Version:
Low level triam smart cotnract support library
154 lines (138 loc) • 4.53 kB
JavaScript
;
var http = require('http');
var ab2str = function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
};
var str2ab = function str2ab(str) {
var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
};
var toArrayBuffer = function toArrayBuffer(buf) {
var ab = new ArrayBuffer(buf.length);
var view = new Uint8Array(ab);
for (var i = 0; i < buf.length; ++i) {
view[i] = buf[i];
}
return ab;
};
var toBuffer = function toBuffer(ab) {
var buf = new Buffer(ab.byteLength);
var view = new Uint8Array(ab);
for (var i = 0; i < buf.length; ++i) {
buf[i] = view[i];
}
return buf;
};
var getBalance = function getBalance(_account) {
return new Promise(function (resolve, reject) {
http.get('http://' + process.env['HOST'] + ':' + process.env['PORT'] + '/balance?id=' + _account, function (res) {
var statusCode = res.statusCode;
var contentType = res.headers['content-type'];
var error = void 0;
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) {
// consume response data to free up memory
res.resume();
return;
}
res.setEncoding('utf8');
var rawData = '';
res.on('data', function (chunk) {
rawData += chunk;
});
res.on('end', function () {
try {
var parsedData = JSON.parse(rawData);
resolve(parsedData);
} catch (e) {
// console.error(e.message);
reject(e.message);
}
});
});
});
};
var getLedgerSeq = function getLedgerSeq() {
return new Promise(function (resolve, reject) {
http.get('http://' + process.env['HOST'] + ':' + process.env['PORT'] + '/ledger', function (res) {
var statusCode = res.statusCode;
var contentType = res.headers['content-type'];
var error = void 0;
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) {
// consume response data to free up memory
res.resume();
return;
}
res.setEncoding('utf8');
var rawData = '';
res.on('data', function (chunk) {
rawData += chunk;
});
res.on('end', function () {
try {
var parsedData = JSON.parse(rawData);
resolve(parsedData);
} catch (e) {
// console.error(e.message);
reject(e.message);
}
});
});
});
};
var getState = function getState(_account) {
return new Promise(function (resolve, reject) {
http.get('http://' + process.env['HOST'] + ':' + process.env['PORT'] + '/state?id=' + _account, function (res) {
var statusCode = res.statusCode;
var contentType = res.headers['content-type'];
var error = void 0;
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) {
// consume response data to free up memory
res.resume();
return;
}
res.setEncoding('utf8');
var rawData = '';
res.on('data', function (chunk) {
rawData += chunk;
});
res.on('end', function () {
try {
var parsedData = JSON.parse(rawData);
resolve(parsedData);
} catch (e) {
// console.error(e.message);
reject(e.message);
}
});
});
});
};
module.exports = {
ab2str: ab2str,
str2ab: str2ab,
toArrayBuffer: toArrayBuffer,
toBuffer: toBuffer,
getState: getState,
getBalance: getBalance,
getLedgerSeq: getLedgerSeq
};
// getBalance('CBF3V5UX5E5KXVM73FNWPQH5OPJXBTH7IEUGKW5OUCA2SGFHHEP3JJ2N').then(data => console.log('data', data)).catch(err => console.log(err));