Ich habe nach Hilfe gesucht, um eine Plattform mit Knoten zu erstellen, die mit der MtGox-API funktioniert. Es scheint einfach zu sein, eine Anfrage zu stellen, aber ich bin verwirrt darüber, wie man einen Parameter übergibt.
Im Moment beginnt mein Code wie unten. Ich kann auf den Server gehen und grundlegende Marktdaten abrufen, aber ich weiß nicht, wie ich etwas anderes machen soll....
request = require('request');
APIResponder = require('../libraries/apiresponder');
exports.market_data = function(req, res, next){
request('https://mtgox.com/api/1/BTCUSD/ticker', function (err, response, body) {
console.log(response);
console.log(body);
APIResponder.respond(res, response);
});
};
Das Bitcoin-Wiki hat ein nettes Beispielprogramm :
var querystring = require('querystring'),
https = require('https'),
crypto = require('crypto');
function MtGoxClient(key, secret) {
this.key = key;
this.secret = secret;
}
MtGoxClient.prototype.query = function(path, args, callback) {
var client = this;
// if no args or invalid args provided, just reset the arg object
if (typeof args != "object") args = {};
// generate a nonce
args['nonce'] = (new Date()).getTime() * 1000;
// compute the post data
var post = querystring.stringify(args);
// compute the sha512 signature of the post data
var hmac = crypto.createHmac('sha512', new Buffer(client.secret, 'base64'));
hmac.update(post);
// this is our query
var options = {
host: 'mtgox.com',
port: 443,
path: '/api/' + path,
method: 'POST',
agent: false,
headers: {
'Rest-Key': client.key,
'Rest-Sign': hmac.digest('base64'),
'User-Agent': 'Mozilla/4.0 (compatible; MtGox node.js client)',
'Content-type': 'application/x-www-form-urlencoded',
'Content-Length': post.length
}
};
// run the query, buffer the data and call the callback
var req = https.request(options, function(res) {
res.setEncoding('utf8');
var buffer = '';
res.on('data', function(data) { buffer += data; });
res.on('end', function() { if (typeof callback == "function") { callback(JSON.parse(buffer)); } });
});
// basic error management
req.on('error', function(e) {
console.log('warning: problem with request: ' + e.message);
});
// post the data
req.write(post);
req.end();
};
var client = new MtGoxClient('mykey', 'mysecret');
client.query('1/BTCUSD/public/ticker', {}, function(json) {
// do something
console.log(json);
});
Wollte noch hinzufügen, dass das Wiki für die streaming/ws-API auf ein Git-Repo von ralphtheninja verweist, das eine Bibliothek für einen node.js-lesbaren Stream für mtgox bereitgestellt hat.
Im Grunde konvertiert es den Stream in ein node.js stream.Readable-Objekt.