insight-ui-zcash/app/controllers/currency.js

61 lines
1.4 KiB
JavaScript
Raw Normal View History

2014-02-03 10:09:08 -08:00
'use strict';
2014-02-05 10:59:44 -08:00
var config = require('../../config/config');
// Set the initial vars
var timestamp = +new Date(),
delay = config.currencyRefresh * 60000,
bitstampRate = 0;
2014-02-03 10:09:08 -08:00
exports.index = function(req, res) {
2014-02-05 10:59:44 -08:00
2014-02-03 10:09:08 -08:00
var _xhr = function() {
2014-02-05 10:59:44 -08:00
if (typeof XMLHttpRequest !== 'undefined' && XMLHttpRequest !== null) {
2014-02-03 10:09:08 -08:00
return new XMLHttpRequest();
} else if (typeof require !== 'undefined' && require !== null) {
var XMLhttprequest = require('xmlhttprequest').XMLHttpRequest;
return new XMLhttprequest();
}
};
var _request = function(url, cb) {
var request;
request = _xhr();
request.open('GET', url, true);
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 200) {
return cb(false, request.responseText);
}
2014-02-05 10:59:44 -08:00
return cb(true, {
status: request.status,
message: 'Request error'
});
2014-02-03 10:09:08 -08:00
}
};
return request.send(null);
};
2014-02-05 10:59:44 -08:00
// Init
var currentTime = +new Date();
if (bitstampRate === 0 || currentTime >= (timestamp + delay)) {
timestamp = currentTime;
2014-02-03 10:09:08 -08:00
2014-02-05 10:59:44 -08:00
_request('https://www.bitstamp.net/api/ticker/', function(err, data) {
if (!err) bitstampRate = parseFloat(JSON.parse(data).last);
2014-02-03 10:09:08 -08:00
2014-02-05 10:59:44 -08:00
res.jsonp({
status: 200,
2014-02-07 08:57:55 -08:00
data: { bitstamp: bitstampRate }
2014-02-05 10:59:44 -08:00
});
});
} else {
2014-02-03 10:09:08 -08:00
res.jsonp({
status: 200,
2014-02-07 08:57:55 -08:00
data: { bitstamp: bitstampRate }
2014-02-03 10:09:08 -08:00
});
2014-02-05 10:59:44 -08:00
}
2014-02-03 10:09:08 -08:00
};