Skip to content

Instantly share code, notes, and snippets.

@polotek
Created May 22, 2010 17:52
Show Gist options
  • Save polotek/410246 to your computer and use it in GitHub Desktop.
Save polotek/410246 to your computer and use it in GitHub Desktop.
/* How to use evented-twitter
* This example depends on http://github.com/creationix/node-router
*/
process.addListener('uncaughtExeption', function(err) {
sys.debug('UncaughtException: ' + err);
});
var sys = require('sys');
var et = require('evented-twitter');
var Twitter = et.Twitter;
function twitter_api_test(req, res) {
var req = req || this;
var t = new Twitter('username', 'password');
req.addListener('end', function() {
t.userTimeline('json', null, function(result) {
res.writeHead(200, {'Content-Type': 'application/json; charset=UTF-8'
, 'Content-Length': result.length});
res.write(result, 'utf8');
res.end();
});
sys.puts('Calling ' + t.lastAPICall);
});
}
var TwitterStream = et.TwitterStream;
var stream_params = {sample: false //{delimited: "length"}
, filter: {track: ['twitter'].toString()
//, 'follow': [].toString();
//, 'locations': [-122.75,36.8,-121.75,37.8,-74,40,-73,41].toString()
}
, retweet: {delimited: "length"}
, links: {delimited: "length"}
, firehose: {delimited: "length"}
};
function twitter_stream_api_test(req, res, streamType) {
var req = req || this;
var t = new TwitterStream('username', 'password');
if(!streamType || !t[streamType]) return;
var params = stream_params[streamType] || {};
var stream = t[streamType]('json', params);
sys.debug('Calling ' + t.lastAPICall);
stream.addListener('ready', function() {
stream.addListener('tweet', function(tweet) {
if(!String(tweet).trim()) return;
try {
// The tweet collector
// DOES NOT parse the text
// for you
var t = JSON.parse(tweet);
res.writeHead(200, {
'Content-Type': 'application/json'
, 'Transfer-Encoding': 'chunked'
, 'Server':'node'
});
res.write(tweet + "\n", 'utf8');
} catch(e) {
sys.debug('\nProblem parsing: ' + tweet);
sys.debug(e.message);
sys.debug(e.stack);
}
});
stream.addListener('complete', function(response) {
stream.close();
res.end();
});
});
stream.addListener('error', function(err) {
sys.debug(err.message);
throw err;
});
req.addListener('end', function() {stream.start();});
}
var PORT = 9000;
var server = require('node-router').getServer();
server.get("/", twitter_api_test);
// http://example.com/stream/sample
// http://example.com/stream/filter?track=Twitter
server.get(/^\/stream\/(.*)$/, twitter_stream_api_test);
sys.puts('Server started');
sys.puts('Listening...');
server.listen(PORT);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment