Skip to content

Commit

Permalink
0.1: format codes
Browse files Browse the repository at this point in the history
  • Loading branch information
guo-yu committed Aug 6, 2014
1 parent 6584dac commit 393db9c
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 122 deletions.
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ check this file: `index.js`
btc supports exchanges below:

- [btcchina](https://www.btcchina.com/): the bitcoin largest exchanger in China
- [mtgox](https://www.mtgox.com/)
- [bitstamp](https://www.bitstamp.net/)
- [btce](https://btc-e.com/)
- [futures796](http://bitcoinwisdom.com/markets/796/futures)
Expand Down Expand Up @@ -89,10 +88,6 @@ btc supports exchanges below:
- Make sure your features are fully tested
- Open a pull request, and enjoy <3

### Changelog

check out [./changelog.md](./changelog.md)

### MIT license
Copyright (c) 2013 turing &lt;[email protected]&gt;

Expand Down
25 changes: 0 additions & 25 deletions changelog.md

This file was deleted.

38 changes: 18 additions & 20 deletions libs/bitcoin.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,30 @@ var sdk = require('./sdk');
var utils = require('./utils');
var exchangers = require('./exchangers');

exports.prices = prices;
exports.price = price;
exports.prices = prices;

function price(target, callback) {
if (!target) return callback(new Error('exchange is required'));
if (!sdk[target]) return callback(new Error('exchange not found'));
return sdk[target]({}, callback);
}

function prices(callback) {
var results = {};
var fetch = function(target, cb) {
if (!sdk[target.name]) return cb(null)
sdk[target.name]({}, function(err, res, body) {
if (err) return cb(err);
results[target.name] = [];
if (res.statusCode == 200) results[target.name].push(body);
return cb(null);
});
};

async.each(utils.list(exchangers), fetch, function(err) {
callback(err, results);
});
}

function price(target, callback) {
var callback = (typeof(target) == 'function' && !callback) ? target : callback;
var target = (target && typeof(target) == 'string') ? target : null;
if (!target) return exports.prices(callback);
if (!sdk[target]) return callback(new Error('exchange not found'));
sdk[target]({}, function(err, result) {
if (err) return callback(err);
return callback(null, result.body);
});
function fetch(exchange, cb) {
var target = exchange.name;
if (!sdk[target]) return cb(null);
exports.price(target, function(err, res, body) {
if (err) return cb(err);
results[target] = [];
if (res.statusCode == 200) results[target].push(body);
return cb(null);
});
};
}
75 changes: 17 additions & 58 deletions libs/cli.js
Original file line number Diff line number Diff line change
@@ -1,61 +1,21 @@
var _ = require('underscore'),
var open = require('open');
var async = require('async');
var _ = require('underscore');
var colors = require('colors');
var moment = require('moment');
var List = require('term-list-enhanced');
var consoler = require('consoler');
var exec = require('child_process').exec;
var List = require('term-list-enhanced');
var sdk = require('./sdk');
var utils = require('./utils');
var bitcoin = require('./bitcoin');
var exchangers = require('./exchangers');
var open = require('open');

module.exports = cli;

function wash(k, v) {
var result = v;
result.currency = exchangers.map[k].currency;
if (k == 'btcchina') {
result.stat = v.ticker && v.ticker.last ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : 'data error';
} else if (k == 'bitstamp') {
result.stat = v.last ? 'ok' : 'error';
result.last = v.last;
} else if (k == 'mtgox') {
result.stat = v.data && v.data.last ? 'ok' : 'error';
result.last = v.data && v.data.last ? v.data.last.value : null;
} else if (k == 'fxbtc') {
result.stat = v.result ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.ask : null;
} else if (k == 'okcoin') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'btctrade') {
result.stat = v.last ? 'ok' : 'error';
result.last = v.last;
} else if (k == 'chbtc') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'futures796') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'btc100') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'btce') {
result.stat = v.ticker && v.ticker.last ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'coinbase') {
result.stat = v.amount ? 'ok' : 'error';
result.last = v.amount ? v.amount : null;
}
return result;
}

function cli() {

var menu = new List();
menu._wash = wash;

menu._configs = {
autorefresh: 10000
}
Expand All @@ -71,31 +31,30 @@ function cli() {
menu._fetchPrices = function(item, index, autorefresh) {
var self = this;
bitcoin.price(autorefresh ? false : item.name, function(err, result) {
if (!err) {
var data = self._wash(item.name, autorefresh ? result[item.name][0] : result),
label = data ? self._label(item.name, data) : colors.red(' request fail');
self._relabel(index, label);
} else {
self._relabel(index, colors.red(' request fail'));
if (err) {
return self._relabel(index, colors.red(' request fail'));
}
var data = utils.wash(item.name, autorefresh ? result[item.name][0] : result);
var label = data ? self._label(item.name, data) : colors.red(' request fail');
self._relabel(index, label);
});
}
};

menu._align = function(s, max) {
var repeat = function(length, s) {
function repeat(length, s) {
var f = s;
for (var i = length - 1; i >= 0; i--) {
f += s;
};
return f;
};
}
if (s && s.length < max) s += repeat(max - s.length, ' ');
return s;
}
};

menu._relabel = function(index, label) {
var exchanger = this.exchangers[index],
afterfix = exchanger.autorefresh ? ' [Auto Refresh / ' + this._configs.autorefresh / 1000 + 's ]' : '';
var exchanger = this.exchangers[index];
var afterfix = exchanger.autorefresh ? ' [Auto Refresh / ' + this._configs.autorefresh / 1000 + 's ]' : '';
this.at(index).label = this._align(exchanger.name, 13) + label + colors.grey(afterfix);
this.draw();
};
Expand Down Expand Up @@ -173,4 +132,4 @@ function cli() {
});

menu._init();
}
}
2 changes: 1 addition & 1 deletion libs/exchanges.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,4 @@ module.exports = {
site: 'https://btc100.org/',
url: 'http://www.btc123.com/e/interfaces/tickers.php?type=btc100Ticker&suffix=0.16103304247371852'
}
};
};
42 changes: 41 additions & 1 deletion libs/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,44 @@ exports.list = function(map) {
list.push(map[name]);
});
return list;
};
};

exports.wash = function(k, v) {
var result = v;
result.currency = exchangers.map[k].currency;
if (k == 'btcchina') {
result.stat = v.ticker && v.ticker.last ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : 'data error';
} else if (k == 'bitstamp') {
result.stat = v.last ? 'ok' : 'error';
result.last = v.last;
} else if (k == 'mtgox') {
result.stat = v.data && v.data.last ? 'ok' : 'error';
result.last = v.data && v.data.last ? v.data.last.value : null;
} else if (k == 'fxbtc') {
result.stat = v.result ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.ask : null;
} else if (k == 'okcoin') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'btctrade') {
result.stat = v.last ? 'ok' : 'error';
result.last = v.last;
} else if (k == 'chbtc') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'futures796') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'btc100') {
result.stat = v.ticker ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'btce') {
result.stat = v.ticker && v.ticker.last ? 'ok' : 'error';
result.last = v.ticker ? v.ticker.last : null;
} else if (k == 'coinbase') {
result.stat = v.amount ? 'ok' : 'error';
result.last = v.amount ? v.amount : null;
}
return result;
};
24 changes: 12 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"name": "btc",
"version": "0.0.5",
"version": "0.1.0",
"description": "a command-line bitcoin price board for geeks",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"start": "bin/cli"
},
"bin": "./bin/cli",
"bin": "bin/cli",
"repository": {
"type": "git",
"url": "https://github.com/turingou/btc.git"
Expand All @@ -25,13 +25,13 @@
"url": "https://github.com/turingou/btc/issues"
},
"dependencies": {
"sdk": "git://github.com/turingou/sdk.git",
"open": "*",
"async": "*",
"colors": "*",
"moment": "*",
"consoler": "*",
"underscore": "*",
"term-list-enhanced": "*"
"sdk": "0.2.0",
"open": "0.0.5",
"async": "~0.9.0",
"colors": "~0.6.2",
"moment": "~2.8.1",
"consoler": "~0.0.8",
"underscore": "~1.6.0",
"term-list-enhanced": "0.1.0"
}
}
}

1 comment on commit 393db9c

@immense055
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.