exchanges
Version:
bitcoin exchanges
76 lines (64 loc) • 1.73 kB
JavaScript
const _ = require('lodash');
//
const config = require('./../config');
const Exchanges = require('./../index');
function getAppKey(name) {
const keyName = `${name}Zhou`;
return config[keyName];
}
async function extrude(ex, exName, d) {
function print(ds, str) {
const space = '========';
if (ds) {
console.log(JSON.stringify(ds, null, 2));
ds = (typeof ds === 'object') ? JSON.stringify(ds, null, 2).substring(0, 400) : '无返回...';
}
let dstr = '';
if (ds) {
dstr = `数组长度: ${ds.length}`;
}
console.log(dstr, `${space}${exName}.${str}${space}`);
}
const fn = ex[d.fn];
if (!fn) {
print(null, `${d.fn}无法找到...`);
return;
}
const ds = await fn.bind(ex)(d.params);
print(ds, d.name);
}
function upperFirst(d) {
const str = d[0].toUpperCase();
return str + d.substring(1);
}
function getExchange(name) {
const conf = getAppKey(name);
name = upperFirst(name);
const Exchange = Exchanges[name];
const ex = new Exchange(conf);
validate(ex);
return ex;
}
function validate(ex) {
if (!ex.name) {
console.log('exchange对象必须有name');
}
}
async function testOneExchange(exName, tasks) {
const ex = getExchange(exName);
for (let i = 0; i < tasks.length; i++) {
const task = tasks[i];
console.log(`测试第【${i}】个任务 ${task.fn}(${task.name})`);
await extrude(ex, exName, task);
}
}
async function testRest(exNames, tasks) {
for (let i = 0; i < exNames.length; i++) {
const exName = exNames[i];
console.log(`测试交易所${exName}...`);
await testOneExchange(exName, tasks);
}
}
module.exports = {
extrude, getAppKey, upperFirst, getExchange, validate, testRest
};