UNPKG

2.44 kBJavaScriptView Raw
1var request = require("request"),
2 crypto = require("crypto"),
3 querystring = require("querystring");
4
5var BTCE = function(apiKey, secret) {
6 var self = this;
7 self.url = "https://btc-e.com/tapi";
8 self.publicApiUrl = "https://btc-e.com/api/2/";
9 self.apiKey = apiKey;
10 self.secret = secret;
11
12 self.makeRequest = function(method, params, callback) {
13 var queryString,
14 sign,
15 headers;
16
17 params.nonce = Math.round((new Date()).getTime()/1000);
18 params.method = method;
19 queryString = querystring.stringify(params);
20
21 sign = crypto.createHmac("sha512", self.secret).update(new Buffer(queryString)).digest('hex').toString();
22 headers = {
23 'Sign': sign,
24 'Key': self.apiKey
25 };
26
27 request({ url: self.url, method: "POST", form: params, headers: headers }, function(err, response, body) {
28 var result = JSON.parse(body);
29 if(result.success === 0) {
30 callback(result.error);
31 return;
32 }
33
34 callback(false, result['return']);
35 });
36 };
37
38 self.makePublicApiRequest = function(pair, method, callback) {
39 request({ url: self.publicApiUrl + pair + '/' + method }, function(err, response, body) {
40 var result = JSON.parse(body);
41
42 if (result.error) {
43 callback(result.error);
44 return;
45 }
46
47 callback(false, result);
48 });
49 };
50
51 self.getInfo = function(callback) {
52 self.makeRequest('getInfo', {}, callback);
53 };
54
55 self.transHistory = function(params, callback) {
56 self.makeRequest('TransHistory', params, callback);
57 };
58
59 self.tradeHistory = function(params, callback) {
60 self.makeRequest('TradeHistory', params, callback);
61 };
62
63 self.orderList = function(params, callback) {
64 self.makeRequest('OrderList', params, callback);
65 };
66
67 self.trade = function(pair, type, rate, amount, callback) {
68 self.makeRequest('Trade', {
69 'pair': pair,
70 'type': type,
71 'rate': rate,
72 'amount': amount
73 }, callback);
74 };
75
76 self.cancelOrder = function(orderId, callback) {
77 self.makeRequest('CancelOrder', {'order_id': orderId}, callback);
78 };
79
80 self.ticker = function(pair, callback) {
81 self.makePublicApiRequest(pair, 'ticker', callback);
82 };
83
84 self.trades = function(pair, callback) {
85 self.makePublicApiRequest(pair, 'trades', callback);
86 };
87
88 self.depth = function(pair, callback) {
89 self.makePublicApiRequest(pair, 'depth', callback);
90 };
91};
92
93module.exports = BTCE;