Skip to content

Commit

Permalink
use async smartly
Browse files Browse the repository at this point in the history
  • Loading branch information
cabhishek committed Nov 16, 2013
1 parent 760f2b8 commit 6544e87
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 66 deletions.
1 change: 1 addition & 0 deletions quotes.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ exports.get_quotes = function(symbol, startDate, endDate, fn) {
exports.get_current_price = function(symbol, fn) {

var url = _s.sprintf("http://api.fool.com/quotes/tmf/v1/quotes?apikey=cf3d7f4bfeba0786742d5339a527af61&symbols=usa:%s", symbol);
console.log(url);

request({
url: url,
Expand Down
132 changes: 66 additions & 66 deletions routes/index.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,68 @@
var load_sentiments = require('../psychsignal'),
_ = require('underscore'),
load_fool_content = require('../fool'),
load_quotes = require('../quotes').get_quotes,
async = require('async'),
load_fool_content = require('../fool'),
load_current_price = require('../quotes').get_current_price,
load_trending_symbols = require('../stocktwits').get_trending_symbol;

exports.index = function(req, res) {

var myStocks = ['MSFT', 'AAPL', 'GOOG', 'SBUX', 'NFLX'];
var number_of_callbacks = 3;
var final_data = [];
var myStocks = ['MSFT', 'AAPL', 'GOOG'];
var model = {};
var callbackCounter = 0;

myStocks.forEach(function(stock) {
async.concat(myStocks, make_requests, function(err, results) {

var rows = [];

results.forEach(function(result) {

var idea_count = Math.floor((Math.random() * 30) + 1);
var sentimetric = (Math.random() * 9) + 1;
var real_sentimetric = sentimetric.toFixed(2);
var caps_star_count = Math.floor((Math.random() * 5) + 1);
var non_caps_star_count = 5 - caps_star_count;

var caps_stars = [];
var non_caps_stars = [];

for (var z = 1; z <= caps_star_count; z++) {
caps_stars.push("star");
}
for (var y = 0; y < non_caps_star_count; y++) {
non_caps_stars.push("not");
}

var row = {
"rank": 0,
"symbol": result.symbol,
"idea_num": idea_count,
"sentimetric": real_sentimetric,
"price": result.price,
"cap_stars": caps_stars,
"non_cap_stars": non_caps_stars,
"bullish": result.sentiments.bullish[0].value,
"bearish": result.sentiments.bearish[0].value
};

rows.push(row);
});

model.stocks = _.sortBy(model.stocks, function(row) {
return row['sentimetric'];
});

model.stocks = rows.reverse();

res.render('index', {
data: model
});

});

function make_requests(stock, callback) {

console.log("Get data for =>" + stock);

var results = {};

async.waterfall([
Expand All @@ -24,82 +73,33 @@ exports.index = function(req, res) {
load_sentiments(stock, '2013-07-01', '2013-10-31', function(err, contents) {

results.sentiments = contents;
callbackCounter++;

callback(null, results);
});
},

function(results, callback) {

load_quotes(stock, '20130701', '20131031', function(err, contents) {
results.quotes = contents;
callbackCounter++;
load_current_price(stock, function(err, contents) {
results.price = contents;

callback(null, results);
});
},

function(results, callback) {

load_trending_symbols(function(err, contents) {
results.trendingsymbols = contents;

//model.trendingsymbols = results.trendingsymbols;
callbackCounter++;
final_data.push(results);
callback(null, results);

callback(null, final_data);
});
}
], function(err, results) {

var rows = [];

results.forEach(function(result) {

var idea_count = Math.floor((Math.random() * 30) + 1);
var sentimetric = (Math.random() * 9) + 1;
var real_sentimetric = sentimetric.toFixed(2);
var caps_star_count = Math.floor((Math.random() * 5) + 1);
var non_caps_star_count = 5 - caps_star_count;

var caps_stars = [];
var non_caps_stars = [];

for (var z = 1; z <= caps_star_count; z++) {
caps_stars.push("star");
}
for (var y = 0; y < non_caps_star_count; y++) {
non_caps_stars.push("not");
}

var row = {
"rank": 0,
"symbol": result.symbol,
"idea_num": idea_count,
"sentimetric": real_sentimetric,
"price": result.quotes[0].close,
"cap_stars": caps_stars,
"non_cap_stars": non_caps_stars,
"bullish": result.sentiments.bullish[0].value,
"bearish": result.sentiments.bearish[0].value
};

rows.push(row);
});

if (callbackCounter == (myStocks.length * number_of_callbacks)) {

model.stocks = _.sortBy(model.stocks, function(row) {
return row['sentimetric'];
});

model.stocks = rows.reverse();

res.render('index', {
data: model
});
callback(null, results);

}
});
});
});
}
};


1 change: 1 addition & 0 deletions stocktwits.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ var request = require('request'),
exports.get_trending_symbol = function(fn) {

var url = _s.sprintf("https://api.stocktwits.com/api/2/trending/symbols.json");
console.log(url);

request({
url: url,
Expand Down

0 comments on commit 6544e87

Please sign in to comment.