chirpstream 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Readme.rdoc +7 -1
- data/VERSION +1 -1
- data/lib/chirpstream.rb +25 -5
- data/lib/chirpstream/event/direct_message.rb +23 -0
- data/lib/chirpstream/twitter_object.rb +1 -1
- metadata +4 -3
data/Readme.rdoc
CHANGED
@@ -6,7 +6,12 @@ This is an experimental EventMachine-based client for http://chirpstream.twitter
|
|
6
6
|
|
7
7
|
== Fun Things You Can Do At Home
|
8
8
|
|
9
|
-
Fire up the
|
9
|
+
Fire up the growl client!
|
10
|
+
|
11
|
+
sudo gem install chirpstream
|
12
|
+
chirp_growl
|
13
|
+
|
14
|
+
Wow! It's growling my tweets! How meta.
|
10
15
|
|
11
16
|
== Usage
|
12
17
|
|
@@ -20,5 +25,6 @@ Fire up the
|
|
20
25
|
chirp.follow {|t| puts "#{t.source.screen_name.foreground(:green)} following #{t.target.screen_name.foreground(:green)}" }
|
21
26
|
chirp.favorite {|t| puts "#{t.source.screen_name.foreground(:green)} <3 -> #{t.target_object.text}" }
|
22
27
|
chirp.retweet {|t| puts "#{t.source.screen_name.foreground(:green)} RT -> #{t.target_object.text}" }
|
28
|
+
chirp.direct_message {|t| puts "DM : #{t.text} (from #{t.sender.name.foreground(:red)} (#{('@' + t.sender.screen_name).foreground(:green)}))" }
|
23
29
|
chirp.connect
|
24
30
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/lib/chirpstream.rb
CHANGED
@@ -9,6 +9,7 @@ $LOAD_PATH.add_current
|
|
9
9
|
require 'chirpstream/twitter_object'
|
10
10
|
require 'chirpstream/event'
|
11
11
|
require 'chirpstream/event/follow'
|
12
|
+
require 'chirpstream/event/direct_message'
|
12
13
|
require 'chirpstream/event/retweet'
|
13
14
|
require 'chirpstream/event/favorite'
|
14
15
|
require 'chirpstream/event/delete'
|
@@ -19,7 +20,7 @@ class Chirpstream
|
|
19
20
|
|
20
21
|
attr_reader :handlers
|
21
22
|
|
22
|
-
Handlers = Struct.new(:friend, :tweet, :follow, :favorite, :retweet, :delete, :reconnect)
|
23
|
+
Handlers = Struct.new(:friend, :tweet, :follow, :favorite, :retweet, :delete, :reconnect, :direct_message)
|
23
24
|
|
24
25
|
attr_reader :username, :password
|
25
26
|
|
@@ -27,7 +28,7 @@ class Chirpstream
|
|
27
28
|
@username = username
|
28
29
|
@password = password
|
29
30
|
@connect_url = "http://chirpstream.twitter.com/2b/user.json"
|
30
|
-
@handlers = Handlers.new([], [], [], [], [], [], [])
|
31
|
+
@handlers = Handlers.new([], [], [], [], [], [], [], [])
|
31
32
|
@data = ''
|
32
33
|
end
|
33
34
|
|
@@ -51,6 +52,10 @@ class Chirpstream
|
|
51
52
|
@handlers.retweet << block
|
52
53
|
end
|
53
54
|
|
55
|
+
def direct_message(&block)
|
56
|
+
@handlers.direct_message << block
|
57
|
+
end
|
58
|
+
|
54
59
|
def delete(&block)
|
55
60
|
@handlers.delete << block
|
56
61
|
end
|
@@ -68,7 +73,7 @@ class Chirpstream
|
|
68
73
|
@handlers.friend.each{|h| h.call(friend)}
|
69
74
|
end
|
70
75
|
}
|
71
|
-
friend_http = EM::HttpRequest.new("http://api.twitter.com/1/users/lookup.json").post(:body => {'user_id' => friend_ids.join(',')}, :head => {'authorization' => [@username, @password]})
|
76
|
+
friend_http = EM::HttpRequest.new("http://api.twitter.com/1/users/lookup.json").post(:body => {'user_id' => friend_ids.join(',')}, :head => {'authorization' => [@username, @password]}, :timeout => 0)
|
72
77
|
http.stream { |chunk|
|
73
78
|
parser << chunk
|
74
79
|
}
|
@@ -94,6 +99,15 @@ class Chirpstream
|
|
94
99
|
end
|
95
100
|
end
|
96
101
|
|
102
|
+
def dispatch_direct_message(data)
|
103
|
+
unless @handlers.direct_message.empty?
|
104
|
+
dm = DirectMessage.new(self, data)
|
105
|
+
dm.load_all { |f|
|
106
|
+
@handlers.direct_message.each{|h| h.call(f)}
|
107
|
+
}
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
97
111
|
def dispatch_favorite(data)
|
98
112
|
unless @handlers.favorite.empty?
|
99
113
|
favorite = Favorite.new(self, data)
|
@@ -127,7 +141,9 @@ class Chirpstream
|
|
127
141
|
end
|
128
142
|
|
129
143
|
def handle_tweet(parsed_data)
|
130
|
-
if parsed_data['
|
144
|
+
if parsed_data['direct_message']
|
145
|
+
dispatch_direct_message(parsed_data)
|
146
|
+
elsif parsed_data['friends']
|
131
147
|
dispatch_friend(parsed_data)
|
132
148
|
elsif parsed_data['text']
|
133
149
|
dispatch_tweet(parsed_data)
|
@@ -163,7 +179,11 @@ class Chirpstream
|
|
163
179
|
connect
|
164
180
|
}
|
165
181
|
http.stream { |chunk|
|
166
|
-
|
182
|
+
begin
|
183
|
+
parser << chunk
|
184
|
+
rescue Yajl::ParseError
|
185
|
+
puts "bad chunk: #{chunk.inspect}"
|
186
|
+
end
|
167
187
|
}
|
168
188
|
end
|
169
189
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Chirpstream
|
2
|
+
class DirectMessage < TwitterObject
|
3
|
+
|
4
|
+
ATTRS = [:coordinates, :recipient, :sender, :sender_screen_name, :text, :id, :recipient_id, :sender_id]
|
5
|
+
|
6
|
+
attr_accessor *ATTRS
|
7
|
+
user_writer :sender
|
8
|
+
|
9
|
+
def initialize(base, data = nil)
|
10
|
+
@base = base
|
11
|
+
from_json(data['direct_message']) if data and data['direct_message']
|
12
|
+
yield self if block_given?
|
13
|
+
end
|
14
|
+
|
15
|
+
def tweet_loadable_id
|
16
|
+
id
|
17
|
+
end
|
18
|
+
|
19
|
+
def loaded?
|
20
|
+
!text.nil?
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 6
|
9
|
+
version: 0.0.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Joshua Hull
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-19 00:00:00 -04:00
|
18
18
|
default_executable: chirp_growl
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- lib/chirpstream.rb
|
92
92
|
- lib/chirpstream/event.rb
|
93
93
|
- lib/chirpstream/event/delete.rb
|
94
|
+
- lib/chirpstream/event/direct_message.rb
|
94
95
|
- lib/chirpstream/event/favorite.rb
|
95
96
|
- lib/chirpstream/event/follow.rb
|
96
97
|
- lib/chirpstream/event/retweet.rb
|