tweetstream 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of tweetstream might be problematic. Click here for more details.

data/.simplecov ADDED
@@ -0,0 +1,4 @@
1
+ SimpleCov.start do
2
+ add_group 'Tweetstream', 'lib/tweetstream'
3
+ add_group 'Specs', 'spec'
4
+ end
@@ -1,3 +1,21 @@
1
+ Version 1.1.4
2
+ =============
3
+
4
+ * Added Client#connect to start streaming inside an EM reactor (pelle)
5
+ * Added shutdown_stream to cleanly stop the stream (lud)
6
+ * Loosened multi_json dependency for Rails 3.2 compatibiltiy
7
+
8
+ Version 1.1.3
9
+ =============
10
+
11
+ * Added on_reconnect callback method
12
+
13
+ Version 1.1.2
14
+ =============
15
+
16
+ * Added support for statuses/links
17
+ * Client now checks that specified json_parser can be loaded during initialization
18
+
1
19
  Version 1.1.1
2
20
  =============
3
21
 
data/README.md CHANGED
@@ -1,17 +1,12 @@
1
- TweetStream
2
- ===========
1
+ # TweetStream
3
2
 
4
3
  TweetStream provides simple Ruby access to [Twitter's Streaming API](https://dev.twitter.com/docs/streaming-api).
5
4
 
6
- Installation
7
- ------------
8
-
9
- To install:
5
+ ## Installation
10
6
 
11
7
  gem install tweetstream
12
8
 
13
- Usage
14
- -----
9
+ ## Usage
15
10
 
16
11
  Using TweetStream is quite simple:
17
12
 
@@ -55,8 +50,7 @@ end
55
50
  The methods available to TweetStream::Client will be kept in parity
56
51
  with the methods available on the Streaming API wiki page.
57
52
 
58
- Using the Twitter Userstream
59
- ----------------------------
53
+ ## Using the Twitter Userstream
60
54
 
61
55
  Using the Twitter userstream works similarly to the regular streaming, except you use the userstream method.
62
56
 
@@ -85,8 +79,7 @@ end
85
79
  client.userstream
86
80
  ```
87
81
 
88
- Configuration and Changes in 1.1.0
89
- ----------------------------------
82
+ ## Configuration and Changes in 1.1.0
90
83
 
91
84
  As of version 1.1.0.rc1 TweetStream supports OAuth. Please note that in order
92
85
  to support OAuth, the `TweetStream::Client` initializer no longer accepts a
@@ -124,8 +117,7 @@ TweetStream assumes OAuth by default. If you are using Basic Auth, it is recomm
124
117
  that you update your code to use OAuth as Twitter is likely to phase out Basic Auth
125
118
  support.
126
119
 
127
- Swappable JSON Parsing
128
- ----------------------
120
+ ## Swappable JSON Parsing
129
121
 
130
122
  As of version 1.1, TweetStream supports swappable JSON backends via MultiJson. You can
131
123
  specify a parser during configuration:
@@ -139,8 +131,7 @@ end
139
131
 
140
132
  Available options are `:yajl`, `:json_gem`, `:json_pure`, and `:ok_json`.
141
133
 
142
- Handling Deletes and Rate Limitations
143
- -------------------------------------
134
+ ## Handling Deletes and Rate Limitations
144
135
 
145
136
  Sometimes the Streaming API will send messages other than statuses.
146
137
  Specifically, it does so when a status is deleted or rate limitations
@@ -189,8 +180,7 @@ Twitter recommends honoring deletions as quickly as possible, and
189
180
  you would likely be wise to integrate this functionality into your
190
181
  application.
191
182
 
192
- Errors and Reconnecting
193
- -----------------------
183
+ ## Errors and Reconnecting
194
184
 
195
185
  TweetStream uses EventMachine to connect to the Twitter Streaming
196
186
  API, and attempts to honor Twitter's guidelines in terms of automatic
@@ -221,8 +211,7 @@ end.track('term') do |status|
221
211
  end
222
212
  ```
223
213
 
224
- Terminating a TweetStream
225
- -------------------------
214
+ ## Terminating a TweetStream
226
215
 
227
216
  It is often the case that you will need to change the parameters of your
228
217
  track or follow tweet streams. In the case that you need to terminate
@@ -242,8 +231,7 @@ When `stop` is called, TweetStream will return from the block
242
231
  the last successfully yielded status, allowing you to make note of
243
232
  it in your application as necessary.
244
233
 
245
- Daemonizing
246
- -----------
234
+ ## Daemonizing
247
235
 
248
236
  It is also possible to create a daemonized script quite easily
249
237
  using the TweetStream library:
@@ -258,13 +246,16 @@ end
258
246
  If you put the above into a script and run the script with `ruby scriptname.rb`,
259
247
  you will see a list of daemonization commands such as start, stop, and run.
260
248
 
261
- TODO
262
- ----
249
+ ## TODO
263
250
 
264
251
  * SiteStream support
265
252
 
266
- Note on Patches/Pull Requests
267
- -----------------------------
253
+ ## <a name="dependencies"></a>Dependency Status
254
+ [![Dependency Status](https://gemnasium.com/intridea/tweetstream.png?travis)][gemnasium]
255
+
256
+ [gemnasium]: https://gemnasium.com/intridea/tweetstream
257
+
258
+ ## Contributing
268
259
 
269
260
  * Fork the project.
270
261
  * Make your feature addition or bug fix.
@@ -272,13 +263,11 @@ Note on Patches/Pull Requests
272
263
  * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
273
264
  * Send me a pull request. Bonus points for topic branches.
274
265
 
275
- Contributors
276
- ------------
266
+ ## Contributors
277
267
 
278
268
  * Michael Bleigh (initial gem)
279
269
  * Steve Agalloco (current maintainer)
280
270
 
281
- Copyright
282
- ---------
271
+ ## Copyright
283
272
 
284
273
  Copyright (c) 2011 Intridea, Inc. (http://www.intridea.com/). See [LICENSE](https://github.com/intridea/tweetstream/blob/master/LICENSE.md) for details.
data/examples/oauth.rb CHANGED
@@ -16,6 +16,6 @@ client.on_error do |message|
16
16
  puts message
17
17
  end
18
18
 
19
- client.track("yankees") do |status|
19
+ client.track("yankees") do |status|
20
20
  puts "#{status.text}"
21
21
  end
@@ -305,7 +305,22 @@ module TweetStream
305
305
  end
306
306
  end
307
307
 
308
- def start(path, query_parameters = {}, &block) #:nodoc:
308
+ # connect to twitter while starting a new EventMachine run loop
309
+ def start(path, query_parameters = {}, &block)
310
+ if EventMachine.reactor_running?
311
+ connect(path, query_parameters, &block)
312
+ else
313
+ EventMachine.epoll
314
+ EventMachine.kqueue
315
+
316
+ EventMachine::run do
317
+ connect(path, query_parameters, &block)
318
+ end
319
+ end
320
+ end
321
+
322
+ # connect to twitter without starting a new EventMachine run loop
323
+ def connect(path, query_parameters = {}, &block)
309
324
  method = query_parameters.delete(:method) || :get
310
325
  delete_proc = query_parameters.delete(:delete) || self.on_delete
311
326
  limit_proc = query_parameters.delete(:limit) || self.on_limit
@@ -332,81 +347,87 @@ module TweetStream
332
347
  :ssl => true
333
348
  }.merge(auth_params).merge(extra_stream_parameters)
334
349
 
335
- EventMachine.epoll
336
- EventMachine.kqueue
337
-
338
- EventMachine::run {
339
- if @on_interval_proc.is_a?(Proc)
340
- interval = @on_interval_time || Configuration::DEFAULT_TIMER_INTERVAL
341
- @timer = EventMachine.add_periodic_timer(interval) do
342
- EventMachine.defer do
343
- @on_interval_proc.call
344
- end
350
+ if @on_interval_proc.is_a?(Proc)
351
+ interval = @on_interval_time || Configuration::DEFAULT_TIMER_INTERVAL
352
+ @timer = EventMachine.add_periodic_timer(interval) do
353
+ EventMachine.defer do
354
+ @on_interval_proc.call
345
355
  end
346
356
  end
357
+ end
347
358
 
348
- @stream = Twitter::JSONStream.connect(stream_params)
349
- @stream.each_item do |item|
350
- begin
351
- raw_hash = json_parser.decode(item)
352
- rescue MultiJson::DecodeError
353
- error_proc.call("MultiJson::DecodeError occured in stream: #{item}") if error_proc.is_a?(Proc)
354
- next
355
- end
359
+ @stream = Twitter::JSONStream.connect(stream_params)
360
+ @stream.each_item do |item|
361
+ begin
362
+ raw_hash = json_parser.decode(item)
363
+ rescue MultiJson::DecodeError
364
+ error_proc.call("MultiJson::DecodeError occured in stream: #{item}") if error_proc.is_a?(Proc)
365
+ next
366
+ end
356
367
 
357
- unless raw_hash.is_a?(::Hash)
358
- error_proc.call("Unexpected JSON object in stream: #{item}") if error_proc.is_a?(Proc)
359
- next
360
- end
368
+ unless raw_hash.is_a?(::Hash)
369
+ error_proc.call("Unexpected JSON object in stream: #{item}") if error_proc.is_a?(Proc)
370
+ next
371
+ end
361
372
 
362
- hash = TweetStream::Hash.new(raw_hash)
363
- if hash[:delete] && hash[:delete][:status]
364
- delete_proc.call(hash[:delete][:status][:id], hash[:delete][:status][:user_id]) if delete_proc.is_a?(Proc)
365
- elsif hash[:limit] && hash[:limit][:track]
366
- limit_proc.call(hash[:limit][:track]) if limit_proc.is_a?(Proc)
367
-
368
- elsif hash[:direct_message]
369
- yield_message_to direct_message_proc, TweetStream::DirectMessage.new(hash[:direct_message])
370
-
371
- elsif hash[:text] && hash[:user]
372
- @last_status = TweetStream::Status.new(hash)
373
- yield_message_to timeline_status_proc, @last_status
374
-
375
- if block_given?
376
- # Give the block the option to receive either one
377
- # or two arguments, depending on its arity.
378
- case block.arity
379
- when 1
380
- yield @last_status
381
- when 2
382
- yield @last_status, self
383
- end
373
+ hash = TweetStream::Hash.new(raw_hash)
374
+ if hash[:delete] && hash[:delete][:status]
375
+ delete_proc.call(hash[:delete][:status][:id], hash[:delete][:status][:user_id]) if delete_proc.is_a?(Proc)
376
+ elsif hash[:limit] && hash[:limit][:track]
377
+ limit_proc.call(hash[:limit][:track]) if limit_proc.is_a?(Proc)
378
+
379
+ elsif hash[:direct_message]
380
+ yield_message_to direct_message_proc, TweetStream::DirectMessage.new(hash[:direct_message])
381
+
382
+ elsif hash[:text] && hash[:user]
383
+ @last_status = TweetStream::Status.new(hash)
384
+ yield_message_to timeline_status_proc, @last_status
385
+
386
+ if block_given?
387
+ # Give the block the option to receive either one
388
+ # or two arguments, depending on its arity.
389
+ case block.arity
390
+ when 1
391
+ yield @last_status
392
+ when 2
393
+ yield @last_status, self
384
394
  end
385
395
  end
386
-
387
- yield_message_to anything_proc, hash
388
396
  end
389
397
 
390
- @stream.on_error do |message|
391
- error_proc.call(message) if error_proc.is_a?(Proc)
392
- end
398
+ yield_message_to anything_proc, hash
399
+ end
393
400
 
394
- @stream.on_reconnect do |timeout, retries|
395
- reconnect_proc.call(timeout, retries) if reconnect_proc.is_a?(Proc)
396
- end
401
+ @stream.on_error do |message|
402
+ error_proc.call(message) if error_proc.is_a?(Proc)
403
+ end
397
404
 
398
- @stream.on_max_reconnects do |timeout, retries|
399
- raise TweetStream::ReconnectError.new(timeout, retries)
400
- end
401
- }
405
+ @stream.on_reconnect do |timeout, retries|
406
+ reconnect_proc.call(timeout, retries) if reconnect_proc.is_a?(Proc)
407
+ end
408
+
409
+ @stream.on_max_reconnects do |timeout, retries|
410
+ raise TweetStream::ReconnectError.new(timeout, retries)
411
+ end
412
+
413
+ @stream
402
414
  end
403
415
 
404
- # Terminate the currently running TweetStream.
416
+ # Terminate the currently running TweetStream and close EventMachine loop
405
417
  def stop
406
418
  EventMachine.stop_event_loop
407
419
  @last_status
408
420
  end
409
421
 
422
+ # Close the connection to twitter without closing the eventmachine loop
423
+ def close_connection
424
+ @stream.close_connection if @stream
425
+ end
426
+
427
+ def stop_stream
428
+ @stream.stop if @stream
429
+ end
430
+
410
431
  protected
411
432
 
412
433
  def parser_from(parser)
@@ -1,3 +1,3 @@
1
1
  module TweetStream
2
- VERSION = '1.1.3'
2
+ VERSION = '1.1.4'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,28 +1,17 @@
1
1
  require 'simplecov'
2
- SimpleCov.start do
3
- add_group 'Tweetstream', 'lib/tweetstream'
4
- add_group 'Specs', 'spec'
5
- end
6
-
7
- $LOAD_PATH.unshift(File.dirname(__FILE__))
8
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
-
10
2
  require 'tweetstream'
11
3
  require 'rspec'
12
- require 'rspec/autorun'
13
4
  require 'yajl'
14
5
  require 'json'
15
6
 
16
7
  def sample_tweets
17
- if @tweets
18
- @tweets
19
- else
20
- @tweets = []
21
- Yajl::Parser.parse(File.open(File.dirname(__FILE__) + '/data/statuses.json', 'r'), :symbolize_keys => true) do |hash|
22
- @tweets << hash
23
- end
24
- @tweets
8
+ return @tweets if @tweets
9
+
10
+ @tweets = []
11
+ Yajl::Parser.parse(File.open(File.dirname(__FILE__) + '/data/statuses.json', 'r'), :symbolize_keys => true) do |hash|
12
+ @tweets << hash
25
13
  end
14
+ @tweets
26
15
  end
27
16
 
28
17
  def sample_direct_messages
@@ -253,38 +253,61 @@ describe TweetStream::Client do
253
253
  end
254
254
  end
255
255
 
256
- it '#track should make a call to start with "statuses/filter" and a track query parameter' do
257
- @client.should_receive(:start).once.with('statuses/filter', :track => ['test'], :method => :post)
258
- @client.track('test')
256
+ describe '#filter' do
257
+ it 'makes a call to "statuses/filter" with the query params provided' do
258
+ @client.should_receive(:start).once.with('statuses/filter', :follow => 123, :method => :post)
259
+ @client.filter(:follow => 123)
260
+ end
261
+ it 'makes a call to "statuses/filter" with the query params provided longitude/latitude pairs, separated by commas ' do
262
+ @client.should_receive(:start).once.with('statuses/filter', :locations => '-122.75,36.8,-121.75,37.8,-74,40,-73,41', :method => :post)
263
+ @client.filter(:locations => '-122.75,36.8,-121.75,37.8,-74,40,-73,41')
264
+ end
259
265
  end
260
266
 
261
- it '#track should comma-join multiple arguments' do
262
- @client.should_receive(:start).once.with('statuses/filter', :track => ['foo', 'bar', 'baz'], :method => :post)
263
- @client.track('foo', 'bar', 'baz')
264
- end
267
+ describe '#follow' do
268
+ it 'makes a call to start with "statuses/filter" and a follow query parameter' do
269
+ @client.should_receive(:start).once.with('statuses/filter', :follow => [123], :method => :post)
270
+ @client.follow(123)
271
+ end
265
272
 
266
- it '#track should comma-join an array of arguments' do
267
- @client.should_receive(:start).once.with('statuses/filter', :track => [['foo','bar','baz']], :method => :post)
268
- @client.track(['foo','bar','baz'])
273
+ it 'comma-joins multiple arguments' do
274
+ @client.should_receive(:start).once.with('statuses/filter', :follow => [123,456], :method => :post)
275
+ @client.follow(123, 456)
276
+ end
269
277
  end
270
278
 
271
- it '#follow should make a call to start with "statuses/filter" and a follow query parameter' do
272
- @client.should_receive(:start).once.with('statuses/filter', :follow => [123], :method => :post)
273
- @client.follow(123)
274
- end
279
+ describe '#locations' do
280
+ it 'should call #start with "statuses/filter" with the query params provided longitude/latitude pairs' do
281
+ @client.should_receive(:start).once.with('statuses/filter', :locations => ['-122.75,36.8,-121.75,37.8,-74,40,-73,41'], :method => :post)
282
+ @client.locations('-122.75,36.8,-121.75,37.8,-74,40,-73,41')
283
+ end
275
284
 
276
- it '#follow should comma-join multiple arguments' do
277
- @client.should_receive(:start).once.with('statuses/filter', :follow => [123,456], :method => :post)
278
- @client.follow(123, 456)
285
+ it 'should call #start with "statuses/filter" with the query params provided longitude/latitude pairs and additional filter' do
286
+ @client.should_receive(:start).once.with('statuses/filter', :locations => ['-122.75,36.8,-121.75,37.8,-74,40,-73,41'], :track => 'rock', :method => :post)
287
+ @client.locations('-122.75,36.8,-121.75,37.8,-74,40,-73,41', :track => 'rock')
288
+ end
279
289
  end
280
290
 
281
- it '#filter should make a call to "statuses/filter" with the query params provided' do
282
- @client.should_receive(:start).once.with('statuses/filter', :follow => 123, :method => :post)
283
- @client.filter(:follow => 123)
284
- end
285
- it '#filter should make a call to "statuses/filter" with the query params provided longitude/latitude pairs, separated by commas ' do
286
- @client.should_receive(:start).once.with('statuses/filter', :locations => '-122.75,36.8,-121.75,37.8,-74,40,-73,41', :method => :post)
287
- @client.filter(:locations => '-122.75,36.8,-121.75,37.8,-74,40,-73,41')
291
+ describe '#track' do
292
+ it 'makes a call to start with "statuses/filter" and a track query parameter' do
293
+ @client.should_receive(:start).once.with('statuses/filter', :track => ['test'], :method => :post)
294
+ @client.track('test')
295
+ end
296
+
297
+ it 'comma-joins multiple arguments' do
298
+ @client.should_receive(:start).once.with('statuses/filter', :track => ['foo', 'bar', 'baz'], :method => :post)
299
+ @client.track('foo', 'bar', 'baz')
300
+ end
301
+
302
+ it 'comma-joins an array of arguments' do
303
+ @client.should_receive(:start).once.with('statuses/filter', :track => [['foo','bar','baz']], :method => :post)
304
+ @client.track(['foo','bar','baz'])
305
+ end
306
+
307
+ it 'should call #start with "statuses/filter" and the provided queries' do
308
+ @client.should_receive(:start).once.with('statuses/filter', :track => ['rock'], :method => :post)
309
+ @client.track('rock')
310
+ end
288
311
  end
289
312
  end
290
313
 
@@ -319,25 +342,6 @@ describe TweetStream::Client do
319
342
  end
320
343
  end
321
344
 
322
- describe '#track' do
323
- it 'should call #start with "statuses/filter" and the provided queries' do
324
- @client.should_receive(:start).once.with('statuses/filter', :track => ['rock'], :method => :post)
325
- @client.track('rock')
326
- end
327
- end
328
-
329
- describe '#locations' do
330
- it 'should call #start with "statuses/filter" with the query params provided longitude/latitude pairs' do
331
- @client.should_receive(:start).once.with('statuses/filter', :locations => ['-122.75,36.8,-121.75,37.8,-74,40,-73,41'], :method => :post)
332
- @client.locations('-122.75,36.8,-121.75,37.8,-74,40,-73,41')
333
- end
334
-
335
- it 'should call #start with "statuses/filter" with the query params provided longitude/latitude pairs and additional filter' do
336
- @client.should_receive(:start).once.with('statuses/filter', :locations => ['-122.75,36.8,-121.75,37.8,-74,40,-73,41'], :track => 'rock', :method => :post)
337
- @client.locations('-122.75,36.8,-121.75,37.8,-74,40,-73,41', :track => 'rock')
338
- end
339
- end
340
-
341
345
  describe '#stop' do
342
346
  it 'should call EventMachine::stop_event_loop' do
343
347
  EventMachine.should_receive :stop_event_loop
@@ -352,6 +356,41 @@ describe TweetStream::Client do
352
356
  end
353
357
  end
354
358
 
359
+ describe '#close_connection' do
360
+ it 'should not call EventMachine::stop_event_loop' do
361
+ EventMachine.should_not_receive :stop_event_loop
362
+ TweetStream::Client.new.close_connection.should be_nil
363
+ end
364
+ end
365
+
366
+ describe '#stop_stream' do
367
+ before(:each) do
368
+ @stream = stub("Twitter::JSONStream",
369
+ :connect => true,
370
+ :unbind => true,
371
+ :each_item => true,
372
+ :on_error => true,
373
+ :on_max_reconnects => true,
374
+ :on_reconnect => true,
375
+ :connection_completed => true,
376
+ :stop => true
377
+ )
378
+ Twitter::JSONStream.stub!(:connect).and_return(@stream)
379
+ @client = TweetStream::Client.new
380
+ @client.connect('/')
381
+ end
382
+
383
+ it "should call stream.stop to cleanly stop the current stream" do
384
+ @stream.should_receive(:stop)
385
+ @client.stop_stream
386
+ end
387
+
388
+ it 'should not stop eventmachine' do
389
+ EventMachine.should_not_receive :stop_event_loop
390
+ @client.stop_stream
391
+ end
392
+ end
393
+
355
394
  describe "oauth" do
356
395
  describe '#start' do
357
396
  before do
data/tweetstream.gemspec CHANGED
@@ -1,32 +1,28 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "tweetstream/version"
2
+ require File.expand_path('../lib/tweetstream/version', __FILE__)
4
3
 
5
4
  Gem::Specification.new do |s|
6
5
  s.name = 'tweetstream'
7
6
  s.version = TweetStream::VERSION
8
7
 
9
- s.authors = ['Michael Bleigh']
10
- s.email = ['michael@intridea.com']
8
+ s.authors = ['Michael Bleigh', 'Steve Agalloco']
9
+ s.email = ['michael@intridea.com', 'steve.agalloco@gmail.com']
11
10
  s.description = %q{TweetStream allows you to easily consume the Twitter Streaming API utilizing the YAJL Ruby gem.}
12
11
  s.summary = %q{TweetStream is a simple wrapper for consuming the Twitter Streaming API.}
13
12
  s.homepage = 'http://github.com/intridea/tweetstream'
14
13
 
15
- s.platform = Gem::Platform::RUBY
16
- s.rubygems_version = %q{1.3.6}
17
- s.required_rubygems_version = Gem::Requirement.new(">= 1.3.6") if s.respond_to? :required_rubygems_version=
14
+ s.add_dependency 'twitter-stream', '= 0.1.14'
15
+ s.add_dependency 'daemons', '~> 1.1'
16
+ s.add_dependency 'multi_json', '>= 1.0'
18
17
 
19
- s.add_dependency 'twitter-stream', '~> 0.1.14'
20
- s.add_dependency 'daemons', '~> 1.1.4'
21
- s.add_dependency 'multi_json', '~> 1.0.3'
22
18
  s.add_development_dependency 'rake', '~> 0.9'
23
19
  s.add_development_dependency 'simplecov', '~> 0.5.4'
24
20
  s.add_development_dependency 'yard', '~> 0.7'
25
21
  s.add_development_dependency 'rdiscount', '~> 1.6'
26
22
  s.add_development_dependency 'rspec', '~> 2.7'
27
23
  s.add_development_dependency 'yajl-ruby', '~> 1.0'
28
- s.add_development_dependency 'json', '~> 1.5.1'
29
- s.add_development_dependency 'guard-rspec', '~> 0.4.3'
24
+ s.add_development_dependency 'json', '~> 1.6'
25
+ s.add_development_dependency 'guard-rspec', '~> 0.5'
30
26
 
31
27
  s.files = `git ls-files`.split("\n")
32
28
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,52 +1,53 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweetstream
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michael Bleigh
9
+ - Steve Agalloco
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2011-11-12 00:00:00.000000000Z
13
+ date: 2012-02-28 00:00:00.000000000Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: twitter-stream
16
- requirement: &2156592560 !ruby/object:Gem::Requirement
17
+ requirement: &2152607200 !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
- - - ~>
20
+ - - =
20
21
  - !ruby/object:Gem::Version
21
22
  version: 0.1.14
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *2156592560
25
+ version_requirements: *2152607200
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: daemons
27
- requirement: &2156592100 !ruby/object:Gem::Requirement
28
+ requirement: &2152606040 !ruby/object:Gem::Requirement
28
29
  none: false
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
- version: 1.1.4
33
+ version: '1.1'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2156592100
36
+ version_requirements: *2152606040
36
37
  - !ruby/object:Gem::Dependency
37
38
  name: multi_json
38
- requirement: &2156591640 !ruby/object:Gem::Requirement
39
+ requirement: &2152605380 !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
41
- - - ~>
42
+ - - ! '>='
42
43
  - !ruby/object:Gem::Version
43
- version: 1.0.3
44
+ version: '1.0'
44
45
  type: :runtime
45
46
  prerelease: false
46
- version_requirements: *2156591640
47
+ version_requirements: *2152605380
47
48
  - !ruby/object:Gem::Dependency
48
49
  name: rake
49
- requirement: &2156591180 !ruby/object:Gem::Requirement
50
+ requirement: &2152604700 !ruby/object:Gem::Requirement
50
51
  none: false
51
52
  requirements:
52
53
  - - ~>
@@ -54,10 +55,10 @@ dependencies:
54
55
  version: '0.9'
55
56
  type: :development
56
57
  prerelease: false
57
- version_requirements: *2156591180
58
+ version_requirements: *2152604700
58
59
  - !ruby/object:Gem::Dependency
59
60
  name: simplecov
60
- requirement: &2156579120 !ruby/object:Gem::Requirement
61
+ requirement: &2152603860 !ruby/object:Gem::Requirement
61
62
  none: false
62
63
  requirements:
63
64
  - - ~>
@@ -65,10 +66,10 @@ dependencies:
65
66
  version: 0.5.4
66
67
  type: :development
67
68
  prerelease: false
68
- version_requirements: *2156579120
69
+ version_requirements: *2152603860
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: yard
71
- requirement: &2156578620 !ruby/object:Gem::Requirement
72
+ requirement: &2152603300 !ruby/object:Gem::Requirement
72
73
  none: false
73
74
  requirements:
74
75
  - - ~>
@@ -76,10 +77,10 @@ dependencies:
76
77
  version: '0.7'
77
78
  type: :development
78
79
  prerelease: false
79
- version_requirements: *2156578620
80
+ version_requirements: *2152603300
80
81
  - !ruby/object:Gem::Dependency
81
82
  name: rdiscount
82
- requirement: &2156578160 !ruby/object:Gem::Requirement
83
+ requirement: &2152602660 !ruby/object:Gem::Requirement
83
84
  none: false
84
85
  requirements:
85
86
  - - ~>
@@ -87,10 +88,10 @@ dependencies:
87
88
  version: '1.6'
88
89
  type: :development
89
90
  prerelease: false
90
- version_requirements: *2156578160
91
+ version_requirements: *2152602660
91
92
  - !ruby/object:Gem::Dependency
92
93
  name: rspec
93
- requirement: &2156577520 !ruby/object:Gem::Requirement
94
+ requirement: &2152601880 !ruby/object:Gem::Requirement
94
95
  none: false
95
96
  requirements:
96
97
  - - ~>
@@ -98,10 +99,10 @@ dependencies:
98
99
  version: '2.7'
99
100
  type: :development
100
101
  prerelease: false
101
- version_requirements: *2156577520
102
+ version_requirements: *2152601880
102
103
  - !ruby/object:Gem::Dependency
103
104
  name: yajl-ruby
104
- requirement: &2156576840 !ruby/object:Gem::Requirement
105
+ requirement: &2152601160 !ruby/object:Gem::Requirement
105
106
  none: false
106
107
  requirements:
107
108
  - - ~>
@@ -109,33 +110,34 @@ dependencies:
109
110
  version: '1.0'
110
111
  type: :development
111
112
  prerelease: false
112
- version_requirements: *2156576840
113
+ version_requirements: *2152601160
113
114
  - !ruby/object:Gem::Dependency
114
115
  name: json
115
- requirement: &2156576120 !ruby/object:Gem::Requirement
116
+ requirement: &2152600600 !ruby/object:Gem::Requirement
116
117
  none: false
117
118
  requirements:
118
119
  - - ~>
119
120
  - !ruby/object:Gem::Version
120
- version: 1.5.1
121
+ version: '1.6'
121
122
  type: :development
122
123
  prerelease: false
123
- version_requirements: *2156576120
124
+ version_requirements: *2152600600
124
125
  - !ruby/object:Gem::Dependency
125
126
  name: guard-rspec
126
- requirement: &2156575520 !ruby/object:Gem::Requirement
127
+ requirement: &2152599980 !ruby/object:Gem::Requirement
127
128
  none: false
128
129
  requirements:
129
130
  - - ~>
130
131
  - !ruby/object:Gem::Version
131
- version: 0.4.3
132
+ version: '0.5'
132
133
  type: :development
133
134
  prerelease: false
134
- version_requirements: *2156575520
135
+ version_requirements: *2152599980
135
136
  description: TweetStream allows you to easily consume the Twitter Streaming API utilizing
136
137
  the YAJL Ruby gem.
137
138
  email:
138
139
  - michael@intridea.com
140
+ - steve.agalloco@gmail.com
139
141
  executables: []
140
142
  extensions: []
141
143
  extra_rdoc_files: []
@@ -144,12 +146,13 @@ files:
144
146
  - .gemtest
145
147
  - .gitignore
146
148
  - .rspec
149
+ - .simplecov
147
150
  - .yardopts
151
+ - CHANGELOG.md
148
152
  - Gemfile
149
153
  - Guardfile
150
154
  - LICENSE.md
151
155
  - README.md
152
- - RELEASE_NOTES.md
153
156
  - Rakefile
154
157
  - examples/growl_daemon.rb
155
158
  - examples/oauth.rb
@@ -192,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
195
  requirements:
193
196
  - - ! '>='
194
197
  - !ruby/object:Gem::Version
195
- version: 1.3.6
198
+ version: '0'
196
199
  requirements: []
197
200
  rubyforge_project:
198
201
  rubygems_version: 1.8.10
@@ -210,3 +213,4 @@ test_files:
210
213
  - spec/tweetstream/parser_spec.rb
211
214
  - spec/tweetstream/status_spec.rb
212
215
  - spec/tweetstream_spec.rb
216
+ has_rdoc: