From ef0b558ed970ee8801b7e050da9f19001a55f18f Mon Sep 17 00:00:00 2001 From: Gustavo Cortez Date: Mon, 20 Jan 2014 18:52:28 -0300 Subject: [PATCH 1/2] fix conflicts --- app/controllers/blocks.js | 14 ++++++++++++++ app/models/Block.js | 9 +++++++++ config/routes.js | 3 +++ public/js/config.js | 4 ++++ public/js/services/blocks.js | 8 +++++++- 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/controllers/blocks.js b/app/controllers/blocks.js index 37324a0..b41b67f 100644 --- a/app/controllers/blocks.js +++ b/app/controllers/blocks.js @@ -32,6 +32,20 @@ exports.show = function(req, res) { } }; +/** + * Show block by Height + */ +exports.blockindex = function(req, res, next, height) { + Block.fromHeight(height, function(err, hash) { + if (err) { + console.log(err); + res.status(400).send('Bad Request'); // TODO + } + else { + res.jsonp(hash); + } + }); +}; /** * List of blocks by date diff --git a/app/models/Block.js b/app/models/Block.js index 3f4bcbc..33bf34b 100644 --- a/app/models/Block.js +++ b/app/models/Block.js @@ -72,6 +72,15 @@ BlockSchema.statics.load = function(id, cb) { }).exec(cb); }; +BlockSchema.statics.fromHeight = function(height, cb) { + var rpc = new RpcClient(config.bitcoind); + var hash = {}; + rpc.getBlockHash(height, function(err, bh){ + if (err) return cb(err); + hash.blockHash = bh.result; + cb(null, hash); + }); +}; BlockSchema.statics.fromHash = function(hash, cb) { this.findOne({ diff --git a/config/routes.js b/config/routes.js index fc27b78..8125f56 100644 --- a/config/routes.js +++ b/config/routes.js @@ -14,6 +14,9 @@ module.exports = function(app, historicSync) { app.get('/api/block/:blockHash', blocks.show); app.param('blockHash', blocks.block); + app.get('/api/block-index/:height', blocks.blockindex); + app.param('height', blocks.blockindex); + // Transaction routes var transactions = require('../app/controllers/transactions'); app.get('/api/tx/:txid', transactions.show); diff --git a/public/js/config.js b/public/js/config.js index 65028fd..9791eb0 100755 --- a/public/js/config.js +++ b/public/js/config.js @@ -7,6 +7,10 @@ angular.module('insight').config(['$routeProvider', when('/block/:blockHash', { templateUrl: 'views/block.html' }). + when('/block-index/:blockHeight', { + controller: 'BlocksController', + template: 'Redirecting...' + }). when('/tx/:txId', { templateUrl: 'views/transaction.html' }). diff --git a/public/js/services/blocks.js b/public/js/services/blocks.js index e713f1f..12d1da1 100644 --- a/public/js/services/blocks.js +++ b/public/js/services/blocks.js @@ -23,5 +23,11 @@ angular.module('insight.blocks').factory('Block', angular.module('insight.blocks').factory('Blocks', function($resource) { - return $resource('/api/blocks'); + return $resource('/api/blocks'); }); + +angular.module('insight.blocks').factory('BlockByHeight', + function($resource) { + return $resource('/api/block-index/:blockHeight'); +}); + From 4291af0cc3ba74cbc8eb527504f96e8153c80627 Mon Sep 17 00:00:00 2001 From: Gustavo Cortez Date: Mon, 20 Jan 2014 18:53:24 -0300 Subject: [PATCH 2/2] go to block using height value. url is: /block-index/ --- app/controllers/status.js | 2 +- public/js/controllers/blocks.js | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/controllers/status.js b/app/controllers/status.js index 1874605..7fb6f72 100644 --- a/app/controllers/status.js +++ b/app/controllers/status.js @@ -10,7 +10,7 @@ var Status = require('../models/Status'), /** * Status */ -exports.show = function(req, res, next) { +exports.show = function(req, res) { if (! req.query.q) { res.status(400).send('Bad Request'); diff --git a/public/js/controllers/blocks.js b/public/js/controllers/blocks.js index a934718..2013db3 100644 --- a/public/js/controllers/blocks.js +++ b/public/js/controllers/blocks.js @@ -1,9 +1,20 @@ 'use strict'; angular.module('insight.blocks').controller('BlocksController', - function ($scope, $rootScope, $routeParams, $location, Global, Block, Blocks) { + function ($scope, $rootScope, $routeParams, $location, Global, Block, Blocks, BlockByHeight) { $scope.global = Global; + if ($routeParams.blockHeight) { + BlockByHeight.get({ + blockHeight: $routeParams.blockHeight + }, function(hash) { + $location.path('/block/' + hash.blockHash); + }, function() { + $rootScope.flashMessage = 'Bad Request'; + $location.path('/'); + }); + } + $scope.list = function() { Blocks.get({ blockDate: $routeParams.blockDate