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

87 lines
1.7 KiB
JavaScript
Raw Normal View History

2014-01-07 04:48:31 -08:00
'use strict';
/**
* Module dependencies.
*/
2014-01-07 13:12:37 -08:00
var mongoose = require('mongoose'),
2014-01-20 10:51:23 -08:00
Block = mongoose.model('Block'),
common = require('./common');
2014-01-07 13:12:37 -08:00
2014-01-07 04:48:31 -08:00
/**
* Find block by hash ...
*/
exports.block = function(req, res, next, hash) {
Block.fromHashWithInfo(hash, function(err, block) {
2014-01-20 11:11:35 -08:00
if (err || ! block) return common.handleErrors(err, res, next);
2014-01-13 12:21:42 -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;
//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
return yyyy + '-' + (mm[1] ? mm : '0' + mm[0]) + '-' + (dd[1] ? dd : '0' + dd[0]); //padding
};
var dateStr;
if (req.query.blockDate) {
dateStr = req.query.blockDate;
} else {
dateStr = formatTimestamp(new Date());
2014-01-08 06:56:36 -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
.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 {
res.jsonp({
blocks: blocks,
pagination: {
next: next,
prev: prev,
current: dateStr
}
});
2014-01-08 06:56:36 -08:00
}
});
};