-
Notifications
You must be signed in to change notification settings - Fork 1
/
twitter.js
70 lines (70 loc) · 2.35 KB
/
twitter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
(function() {
var Base, NTwitter, Twitter, sys;
var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
child.prototype = new ctor;
child.__super__ = parent.prototype;
return child;
}, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
NTwitter = require('ntwitter');
Base = require('./base');
sys = require('sys');
Twitter = (function() {
__extends(Twitter, Base);
function Twitter() {
Twitter.__super__.constructor.apply(this, arguments);
}
Twitter.prototype.name = "twitter";
Twitter.prototype.setup = function() {
var config;
config = this.config();
this.twitter = new NTwitter({
consumer_key: config.consumer.key,
consumer_secret: config.consumer.secret,
access_token_key: config.access_token.key,
access_token_secret: config.access_token.secret
});
return this.startStream();
};
Twitter.prototype.startStream = function() {
var config, outer;
outer = this;
config = this.config();
return this.twitter.stream('statuses/filter', {
track: config.track
}, __bind(function(stream) {
stream.on('data', function(tweet) {
return outer.emit('tweet', outer.filtered(tweet));
});
stream.on('end', function(resp) {
var reconnect;
sys.puts("Twitter Connection ended, Status code was " + resp.statusCode);
reconnect = function() {
return outer.startStream();
};
return setTimeout(reconnect, 10000);
});
return stream.on('error', function(error) {
return sys.puts("Error in Twitter: " + error.message);
});
}, this));
};
Twitter.prototype.filtered = function(tweet) {
return {
text: tweet.text,
created_at: tweet.created_at,
id_str: tweet.id_str,
retweeted: tweet.retweeted,
user: {
name: tweet.user.name,
profile_image_url: tweet.user.profile_image_url,
screen_name: tweet.user.screen_name
}
};
};
return Twitter;
})();
module.exports = Twitter;
}).call(this);