2014-01-07 04:48:31 -08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Module dependencies.
|
|
|
|
*/
|
2014-01-07 13:12:37 -08:00
|
|
|
var mongoose = require('mongoose'),
|
|
|
|
Block = mongoose.model('Block');
|
|
|
|
|
2014-01-07 04:48:31 -08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Find block by hash ...
|
|
|
|
*/
|
|
|
|
exports.block = function(req, res, next, hash) {
|
2014-01-08 12:15:46 -08:00
|
|
|
Block.fromHashWithInfo(hash, function(err, block) {
|
2014-01-13 12:21:42 -08:00
|
|
|
if (err && !block) {
|
|
|
|
console.log(err);
|
|
|
|
res.status(404).send('Not found');
|
|
|
|
return next();
|
|
|
|
}
|
|
|
|
|
2014-01-08 12:15:46 -08:00
|
|
|
req.block = block.info;
|
2014-01-13 12:21:42 -08:00
|
|
|
return next();
|
2014-01-07 04:48:31 -08:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2014-01-08 06:56:36 -08:00
|
|
|
* Show block
|
2014-01-07 04:48:31 -08:00
|
|
|
*/
|
|
|
|
exports.show = function(req, res) {
|
2014-01-13 12:21:42 -08:00
|
|
|
if (req.block) {
|
|
|
|
res.jsonp(req.block);
|
|
|
|
}
|
2014-01-07 04:48:31 -08:00
|
|
|
};
|
|
|
|
|
2014-01-15 07:41:59 -08:00
|
|
|
|
2014-01-08 06:56:36 -08:00
|
|
|
/**
|
|
|
|
* List of blocks by date
|
|
|
|
*/
|
|
|
|
exports.list = function(req, res) {
|
2014-01-15 07:41:59 -08:00
|
|
|
var limit = req.query.limit || 0;
|
|
|
|
|
2014-01-09 13:36:20 -08:00
|
|
|
//helper to convert timestamps to yyyy-mm-dd format
|
|
|
|
var formatTimestamp = function (date) {
|
|
|
|
var yyyy = date.getUTCFullYear().toString();
|
|
|
|
var mm = (date.getUTCMonth() + 1).toString(); // getMonth() is zero-based
|
|
|
|
var dd = date.getUTCDate().toString();
|
2014-01-08 06:56:36 -08:00
|
|
|
|
2014-01-09 13:36:20 -08:00
|
|
|
return yyyy + '-' + (mm[1] ? mm : '0' + mm[0]) + '-' + (dd[1] ? dd : '0' + dd[0]); //padding
|
|
|
|
};
|
2014-01-09 10:15:30 -08:00
|
|
|
|
2014-01-09 13:36:20 -08:00
|
|
|
var dateStr;
|
|
|
|
if (req.query.blockDate) {
|
|
|
|
dateStr = req.query.blockDate;
|
|
|
|
} else {
|
|
|
|
dateStr = formatTimestamp(new Date());
|
2014-01-08 06:56:36 -08:00
|
|
|
}
|
|
|
|
|
2014-01-09 13:36:20 -08:00
|
|
|
var gte = Math.round((new Date(dateStr)).getTime() / 1000);
|
|
|
|
|
|
|
|
//pagination
|
|
|
|
var lte = gte + 86400;
|
|
|
|
var prev = formatTimestamp(new Date((gte - 86400) * 1000));
|
|
|
|
var next = formatTimestamp(new Date(lte * 1000));
|
|
|
|
|
2014-01-08 06:56:36 -08:00
|
|
|
Block
|
2014-01-09 13:36:20 -08:00
|
|
|
.find({
|
|
|
|
time: {
|
|
|
|
'$gte': gte,
|
|
|
|
'$lte': lte
|
|
|
|
}
|
|
|
|
})
|
2014-01-15 07:41:59 -08:00
|
|
|
.limit(limit)
|
2014-01-15 07:50:55 -08:00
|
|
|
.sort('-time')
|
2014-01-08 06:56:36 -08:00
|
|
|
.exec(function(err, blocks) {
|
|
|
|
if (err) {
|
2014-01-15 07:41:59 -08:00
|
|
|
res.status(500).send(err);
|
2014-01-08 06:56:36 -08:00
|
|
|
} else {
|
2014-01-09 13:36:20 -08:00
|
|
|
res.jsonp({
|
|
|
|
blocks: blocks,
|
|
|
|
pagination: {
|
|
|
|
next: next,
|
|
|
|
prev: prev,
|
|
|
|
current: dateStr
|
|
|
|
}
|
|
|
|
});
|
2014-01-08 06:56:36 -08:00
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|