Initial
This commit is contained in:
commit
5ed915c6c5
8 changed files with 329 additions and 0 deletions
54
events/twitterstream.js
Normal file
54
events/twitterstream.js
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
var util = require('util'),
|
||||
http = require('http'),
|
||||
events = require('events');
|
||||
|
||||
var TwitterStream = function(opts) {
|
||||
this.username = opts.username;
|
||||
this.password = opts.password;
|
||||
this.track = opts.track;
|
||||
this.data = '';
|
||||
};
|
||||
|
||||
TwitterStream.prototype = new events.EventEmitter;
|
||||
|
||||
TwitterStream.prototype.getTweets = function() {
|
||||
var opts = {
|
||||
host: 'stream.twitter.com',
|
||||
port: 80,
|
||||
path: '/1/statuses/filter.json?track=' + this.track,
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Connection': 'keep-alive',
|
||||
'Accept': '*/*',
|
||||
'User-Agent': 'Example Twitter Streaming Client',
|
||||
'Authorization': 'Basic ' + new Buffer(this.username + ':' + this.password).toString('base64'),
|
||||
},
|
||||
},
|
||||
self = this;
|
||||
|
||||
this.connection = http.request(opts, function(response) {
|
||||
response.setEncoding('utf8');
|
||||
response.on('data', function(chunk) {
|
||||
self.data += chunk.toString('utf8');
|
||||
|
||||
var index, json;
|
||||
|
||||
while((index = self.data.indexOf('\r\n')) > -1) {
|
||||
json = self.data.slice(0, index);
|
||||
self.data = self.data.slice(index + 2);
|
||||
if(json.length > 0) {
|
||||
try {
|
||||
self.emit('tweet', JSON.parse(json));
|
||||
} catch(e) {
|
||||
self.emit('error', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
this.connection.write('?track=' + this.track);
|
||||
this.connection.end();
|
||||
};
|
||||
|
||||
module.exports = TwitterStream;
|
||||
Reference in a new issue