140 lines
5.7 KiB
JavaScript
140 lines
5.7 KiB
JavaScript
var request = require('postman-request');
|
|
var base_url = 'https://api3.stex.com/public';
|
|
|
|
function get_summary(coin, exchange, stex_id, cb) {
|
|
var summary = {};
|
|
|
|
request({ uri: base_url + '/ticker/' + stex_id, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
|
if (error)
|
|
return cb(error, null);
|
|
else if (body.success === true) {
|
|
summary['bid'] = parseFloat(body.data['bid']).toFixed(8);
|
|
summary['ask'] = parseFloat(body.data['ask']).toFixed(8);
|
|
summary['volume'] = body.data['volume'];
|
|
summary['high'] = parseFloat(body.data['high']).toFixed(8);
|
|
summary['low'] = parseFloat(body.data['low']).toFixed(8);
|
|
summary['last'] = parseFloat(body.data['last']).toFixed(8);
|
|
return cb(null, summary);
|
|
} else
|
|
return cb(error, null);
|
|
}).on('error', function(err) {
|
|
return cb(error, null);
|
|
});
|
|
}
|
|
|
|
function get_trades(coin, exchange, stex_id, cb) {
|
|
var req_url = base_url + '/trades/' + stex_id + '?sort=DESC&limit=100';
|
|
|
|
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
|
if (body.success == true) {
|
|
var tTrades = body.data;
|
|
var trades = [];
|
|
for (var i = 0; i < tTrades.length; i++) {
|
|
var Trade = {
|
|
orderpair: coin,
|
|
ordertype: tTrades[i].type,
|
|
amount: parseFloat(tTrades[i].amount).toFixed(8),
|
|
price: parseFloat(tTrades[i].price).toFixed(8),
|
|
// total: parseFloat(tTrades[i].Total).toFixed(8)
|
|
// Necessary because API will return 0.00 for small volume transactions
|
|
total: (parseFloat(tTrades[i].amount).toFixed(8) * parseFloat(tTrades[i].price)).toFixed(8),
|
|
timestamp: tTrades[i].timestamp
|
|
}
|
|
trades.push(Trade);
|
|
}
|
|
return cb(null, trades);
|
|
}
|
|
else
|
|
return cb(body.message, null);
|
|
}).on('error', function(err) {
|
|
return cb(error, null);
|
|
});
|
|
}
|
|
|
|
function get_orders(coin, exchange, stex_id, cb) {
|
|
var req_url = base_url + '/orderbook/' + stex_id + '?limit_bids=100&limit_asks=100';
|
|
|
|
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
|
if (body.success == true) {
|
|
var orders = body.data;
|
|
var buys = [];
|
|
var sells = [];
|
|
if (orders['bid'].length > 0){
|
|
for (var i = 0; i < orders['bid'].length; i++) {
|
|
var order = {
|
|
amount: parseFloat(orders.bid[i].amount).toFixed(8),
|
|
price: parseFloat(orders.bid[i].price).toFixed(8),
|
|
// total: parseFloat(orders.bid[i].Total).toFixed(8)
|
|
// Necessary because API will return 0.00 for small volume transactions
|
|
total: (parseFloat(orders.bid[i].amount).toFixed(8) * parseFloat(orders.bid[i].price)).toFixed(8)
|
|
}
|
|
buys.push(order);
|
|
}
|
|
}
|
|
if (orders['ask'].length > 0) {
|
|
for (var x = 0; x < orders['ask'].length; x++) {
|
|
var order = {
|
|
amount: parseFloat(orders.ask[x].amount).toFixed(8),
|
|
price: parseFloat(orders.ask[x].price).toFixed(8),
|
|
// total: parseFloat(orders.ask[x].Total).toFixed(8)
|
|
// Necessary because API will return 0.00 for small volume transactions
|
|
total: (parseFloat(orders.ask[x].amount).toFixed(8) * parseFloat(orders.ask[x].price)).toFixed(8)
|
|
}
|
|
sells.push(order);
|
|
}
|
|
}
|
|
return cb(null, buys, sells);
|
|
}
|
|
else
|
|
return cb(body.message, [], [])
|
|
}).on('error', function(err) {
|
|
return cb(error, null, null);
|
|
});
|
|
}
|
|
|
|
function get_chartdata(coin, exchange, stex_id, cb) {
|
|
// do not collect chart data for now
|
|
return cb(null, []);
|
|
/*
|
|
var req_url = base_url + '/chart/' + stex_id + '/30?timeStart=' + start + '&timeEnd=' + end + '&limit=100';
|
|
var end = Date.now();
|
|
end = end / 1000;
|
|
start = end - 86400;
|
|
|
|
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, chartdata) {
|
|
if (error) {
|
|
return cb(error, []);
|
|
} else {
|
|
if (chartdata.success == true) {
|
|
var processed = [];
|
|
for (var i = 0; i < chartdata.data.length; i++) {
|
|
processed.push([chartdata.data[i].time, parseFloat(chartdata.data[i].open), parseFloat(chartdata.data[i].high), parseFloat(chartdata.data[i].low), parseFloat(chartdata.data[i].close)]);
|
|
if (i == chartdata.data.length - 1)
|
|
return cb(null, processed);
|
|
}
|
|
}
|
|
else
|
|
return cb(chartdata.message, []);
|
|
}
|
|
});
|
|
*/
|
|
}
|
|
|
|
module.exports = {
|
|
get_data: function (coin, exchange, stex_id, cb) {
|
|
var error = null;
|
|
get_chartdata(coin, exchange, stex_id, function (err, chartdata) {
|
|
if (err) { chartdata = []; error = err; }
|
|
get_orders(coin, exchange, stex_id, function (err, buys, sells) {
|
|
if (err) { error = err; }
|
|
get_trades(coin, exchange, stex_id, function (err, trades) {
|
|
if (err) { error = err; }
|
|
get_summary(coin, exchange, stex_id, function (err, stats) {
|
|
if (err) { error = err; }
|
|
return cb(error, { buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats });
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}; |