em-twitter 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2faa76054df9c4e28303d85150d33ed50b315aa5
4
+ data.tar.gz: 6595037bb4b9d0c4d5d782ba6023bcf4fc3e60d3
5
+ SHA512:
6
+ metadata.gz: 01a1887b81e5855f5f79ea161772ff30ab924c78703e996fd7cbbbfd5727f0b929e8e98faa2ad482a4bc2d4dbd6ef4edc0dff4f8f2831cea9eb55267abc37da7
7
+ data.tar.gz: 2b483b9d83d4acf3b451ee028130ead5cdb36202e74c842c0612d0688a126ec6d6979de0580bf89ad75fd405e73ba6ccdfd2a04bf03bd65686a417b2cb781307
data/em-twitter.gemspec CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |spec|
15
15
  spec.summary = spec.description
16
16
 
17
17
  spec.add_dependency 'eventmachine', '~> 1.0'
18
- spec.add_dependency 'http_parser.rb', '~> 0.5'
19
- spec.add_dependency 'simple_oauth', '~> 0.1'
18
+ spec.add_dependency 'http_parser.rb', ['>= 0.6.0.beta.2', '< 0.7']
19
+ spec.add_dependency 'simple_oauth', '~> 0.2'
20
20
 
21
21
  spec.add_development_dependency 'bundler', '~> 1.0'
22
22
 
@@ -137,7 +137,7 @@ module EventMachine
137
137
  protected
138
138
 
139
139
  def handle_stream(data)
140
- @last_response << @decoder.decode(data)
140
+ @last_response << (@decoder ||= BaseDecoder.new).decode(data)
141
141
 
142
142
  if @last_response.complete?
143
143
  invoke_callback(@client.each_item_callback, @last_response.body)
@@ -149,8 +149,7 @@ module EventMachine
149
149
  @response_code = @parser.status_code
150
150
  @headers = headers
151
151
 
152
- @decoder = BaseDecoder.new
153
-
152
+ # @decoder = BaseDecoder.new
154
153
  # TODO: Complete gzip support
155
154
  # detect gzip encoding and use a decoder for response bodies
156
155
  # gzip needs to be detected with the Content-Encoding header
@@ -299,14 +298,16 @@ module EventMachine
299
298
  # Resets the internals of the connection on initial connection and
300
299
  # on reconnections. Clears the response buffer and resets internal state
301
300
  def reset_connection
302
- @buffer = BufferedTokenizer.new("\r", MAX_LINE_LENGTH)
303
- @parser = Http::Parser.new(self)
304
- @last_response = Response.new
305
- @response_code = 0
306
-
307
- @gracefully_closed = false
308
- @immediate_reconnect = false
309
- @auto_reconnect = @options[:auto_reconnect]
301
+ @buffer = BufferedTokenizer.new("\r", MAX_LINE_LENGTH)
302
+ @parser = Http::Parser.new(self)
303
+ @parser.on_body = method(:on_body)
304
+ @parser.on_headers_complete = method(:on_headers_complete)
305
+ @last_response = Response.new
306
+ @response_code = 0
307
+
308
+ @gracefully_closed = false
309
+ @immediate_reconnect = false
310
+ @auto_reconnect = @options[:auto_reconnect]
310
311
  end
311
312
 
312
313
  end
@@ -1,5 +1,5 @@
1
1
  module EventMachine
2
2
  module Twitter
3
- VERSION = "0.2.2" unless defined?(EventMachine::Twitter::VERSION)
3
+ VERSION = "0.3.0" unless defined?(EventMachine::Twitter::VERSION)
4
4
  end
5
5
  end
@@ -13,13 +13,13 @@ describe EM::Twitter::Client do
13
13
 
14
14
  describe ".connect" do
15
15
  before do
16
- conn = stub('EventMachine::Connection')
17
- conn.stub(:start_tls).and_return(nil)
18
- EM.stub(:connect).and_return(conn)
16
+ conn = double('EventMachine::Connection')
17
+ allow(conn).to receive(:start_tls).and_return(nil)
18
+ allow(EM).to receive(:connect).and_return(conn)
19
19
  end
20
20
 
21
21
  it "connects to the configured host/port" do
22
- EventMachine.should_receive(:connect).with(
22
+ expect(EventMachine).to receive(:connect).with(
23
23
  test_options[:host],
24
24
  test_options[:port],
25
25
  EventMachine::Twitter::Connection,
@@ -31,7 +31,7 @@ describe EM::Twitter::Client do
31
31
 
32
32
  context "when using a proxy" do
33
33
  it "connects to the proxy server" do
34
- EventMachine.should_receive(:connect).with(
34
+ expect(EventMachine).to receive(:connect).with(
35
35
  "my-proxy",
36
36
  8080,
37
37
  EventMachine::Twitter::Connection,
@@ -43,9 +43,9 @@ describe EM::Twitter::Client do
43
43
  end
44
44
 
45
45
  it "doesn't trigger SSL until connection is established" do
46
- connection = stub('EventMachine::Connection')
47
- EM.should_receive(:connect).and_return(connection)
48
- EM.should_not_receive(:start_tls)
46
+ connection = double('EventMachine::Connection')
47
+ expect(EM).to receive(:connect).and_return(connection)
48
+ expect(EM).not_to receive(:start_tls)
49
49
  client = EM::Twitter::Client.connect(:ssl => { :key => "/path/to/key.pem", :cert => "/path/to/cert.pem" })
50
50
  end
51
51
  end
@@ -32,7 +32,7 @@ describe "EM::Twitter::Connection reconnections" do
32
32
  after { Mockingbird.teardown }
33
33
 
34
34
  it "resets the network failure reconnector" do
35
- Reconnectors::NetworkFailure.any_instance.should_receive(:reset)
35
+ expect_any_instance_of(Reconnectors::NetworkFailure).to receive(:reset)
36
36
  EM.run do
37
37
  EM::Timer.new(1) { EM.stop }
38
38
  client = Client.connect(default_options)
@@ -40,7 +40,7 @@ describe "EM::Twitter::Connection reconnections" do
40
40
  end
41
41
 
42
42
  it "resets the application failure reconnector" do
43
- Reconnectors::ApplicationFailure.any_instance.should_receive(:reset)
43
+ expect_any_instance_of(Reconnectors::ApplicationFailure).to receive(:reset)
44
44
  EM.run do
45
45
  EM::Timer.new(1) { EM.stop }
46
46
  client = Client.connect(default_options)
@@ -120,7 +120,7 @@ describe "EM::Twitter::Connection reconnections" do
120
120
  it "does not reconnect when auto_reconnect is false" do
121
121
  EM.run do
122
122
  client = Client.connect(default_options.merge(:auto_reconnect => false))
123
- client.should_not_receive(:reconnect)
123
+ expect(client).not_to receive(:reconnect)
124
124
  client.on_close { EM.stop }
125
125
  end
126
126
  end
@@ -152,7 +152,7 @@ describe "EM::Twitter::Connection reconnections" do
152
152
  it "reconnects the current connection" do
153
153
  EM.run_block do
154
154
  client = Client.connect(default_options)
155
- client.connection.should_receive(:reconnect).once
155
+ expect(client.connection).to receive(:reconnect).once
156
156
  client.reconnect
157
157
  end
158
158
  end
@@ -14,7 +14,7 @@ describe EM::Twitter::Connection do
14
14
  end
15
15
 
16
16
  it "sets the inactivity timeout" do
17
- EM.should_receive(:set_comm_inactivity_timeout)
17
+ expect(EM).to receive(:set_comm_inactivity_timeout)
18
18
  EM.run_block do
19
19
  client = EM::Twitter::Client.connect(default_options.merge(:timeout => 2))
20
20
  end
@@ -109,7 +109,7 @@ describe EM::Twitter::Connection do
109
109
  called = false
110
110
  EM.run do
111
111
  client = EM::Twitter::Client.connect(default_options)
112
- client.connection.stub(:stalled?).and_return(true)
112
+ allow(client.connection).to receive(:stalled?).and_return(true)
113
113
  client.on_no_data_received do
114
114
  called = true
115
115
  EM.stop
@@ -123,8 +123,8 @@ describe EM::Twitter::Connection do
123
123
  called = false
124
124
  EM.run do
125
125
  client = EM::Twitter::Client.connect(default_options)
126
- client.connection.should_receive(:close_connection).once
127
- client.connection.stub(:stalled?).and_return(true)
126
+ expect(client.connection).to receive(:close_connection).once
127
+ allow(client.connection).to receive(:stalled?).and_return(true)
128
128
  client.on_no_data_received do
129
129
  called = true
130
130
  EM.stop
@@ -141,7 +141,7 @@ describe EM::Twitter::Connection do
141
141
  # this is kind of sneaky, using a stub on gracefully_closed?
142
142
  # to set a nil response the first time around to mimic a null
143
143
  # response object
144
- client.connection.stub(:gracefully_closed?) do
144
+ allow(client.connection).to receive(:gracefully_closed?) do
145
145
  resp = client.connection.instance_variable_get(:@last_response)
146
146
  client.connection.instance_variable_set(:@last_response, nil) if resp.timestamp.nil?
147
147
  false
@@ -174,7 +174,7 @@ describe EM::Twitter::Connection do
174
174
  it "closes the connection" do
175
175
  EM.run_block do
176
176
  client = EM::Twitter::Client.connect(default_options)
177
- client.connection.should_receive(:close_connection).once
177
+ expect(client.connection).to receive(:close_connection).once
178
178
  client.stop
179
179
  end
180
180
  end
@@ -210,7 +210,7 @@ describe EM::Twitter::Connection do
210
210
  it "updates the options hash" do
211
211
  EM.run_block do
212
212
  client = EM::Twitter::Client.connect(default_options)
213
- client.connection.update(:params => { :track => 'rangers' })
213
+ client.connection.update(:params => {:track => 'rangers'})
214
214
  expect(client.connection.options[:params]).to eq({:track => 'rangers'})
215
215
  end
216
216
  end
@@ -218,18 +218,18 @@ describe EM::Twitter::Connection do
218
218
  it "reconnects after updating" do
219
219
  EM.run_block do
220
220
  client = EM::Twitter::Client.connect(default_options)
221
- client.connection.should_receive(:immediate_reconnect).once
222
- client.connection.update(:params => { :track => 'rangers' })
221
+ expect(client.connection).to receive(:immediate_reconnect).once
222
+ client.connection.update(:params => {:track => 'rangers'})
223
223
  end
224
224
  end
225
225
 
226
226
  it "uses the new options when reconnecting" do
227
227
  EM.run_block do
228
228
  client = EM::Twitter::Client.connect(default_options)
229
- client.connection.should_receive(:send_data) do |request|
229
+ expect(client.connection).to receive(:send_data) do |request|
230
230
  expect(request.to_s).to include('track=rangers')
231
231
  end
232
- client.connection.update(:params => { :track => 'rangers' })
232
+ client.connection.update(:params => {:track => 'rangers'})
233
233
  end
234
234
  end
235
235
  end
@@ -17,7 +17,7 @@ describe EM::Twitter::Request do
17
17
  it 'passes params on POST requests' do
18
18
  options = default_options.merge(:method => 'POST', :host => 'stream.twitter.com', :port => 443)
19
19
  req = EM::Twitter::Request.new(options)
20
- SimpleOAuth::Header.should_receive(:new).
20
+ expect(SimpleOAuth::Header).to receive(:new).
21
21
  with('POST', "http://stream.twitter.com/1/statuses/filter.json", {"track"=>"nfl"}, kind_of(Hash))
22
22
 
23
23
  req.send(:oauth_header)
@@ -26,7 +26,7 @@ describe EM::Twitter::Request do
26
26
  it 'passes params on the querystring for GET requests' do
27
27
  options = default_options.merge(:method => 'GET', :host => 'stream.twitter.com', :port => 443)
28
28
  req = EM::Twitter::Request.new(options)
29
- SimpleOAuth::Header.should_receive(:new).
29
+ expect(SimpleOAuth::Header).to receive(:new).
30
30
  with('GET', "http://stream.twitter.com/1/statuses/filter.json?track=nfl", {}, kind_of(Hash))
31
31
 
32
32
  req.send(:oauth_header)
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,7 @@ unless ENV['CI']
4
4
  SimpleCov.start do
5
5
  add_group 'EM-Twitter', 'lib/em-twitter'
6
6
  add_group 'Specs', 'spec'
7
+ add_filter '.bundle'
7
8
  end
8
9
  end
9
10
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em-twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steve Agalloco
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-24 00:00:00.000000000 Z
11
+ date: 2013-09-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: eventmachine
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,39 +27,40 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: http_parser.rb
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.0.beta.2
34
+ - - <
36
35
  - !ruby/object:Gem::Version
37
- version: '0.5'
36
+ version: '0.7'
38
37
  type: :runtime
39
38
  prerelease: false
40
39
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
40
  requirements:
43
- - - ~>
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.6.0.beta.2
44
+ - - <
44
45
  - !ruby/object:Gem::Version
45
- version: '0.5'
46
+ version: '0.7'
46
47
  - !ruby/object:Gem::Dependency
47
48
  name: simple_oauth
48
49
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0.1'
53
+ version: '0.2'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
57
  requirements:
59
58
  - - ~>
60
59
  - !ruby/object:Gem::Version
61
- version: '0.1'
60
+ version: '0.2'
62
61
  - !ruby/object:Gem::Dependency
63
62
  name: bundler
64
63
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
64
  requirements:
67
65
  - - ~>
68
66
  - !ruby/object:Gem::Version
@@ -70,7 +68,6 @@ dependencies:
70
68
  type: :development
71
69
  prerelease: false
72
70
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
71
  requirements:
75
72
  - - ~>
76
73
  - !ruby/object:Gem::Version
@@ -116,33 +113,26 @@ files:
116
113
  homepage: https://github.com/spagalloco/em-twitter
117
114
  licenses:
118
115
  - MIT
116
+ metadata: {}
119
117
  post_install_message:
120
118
  rdoc_options: []
121
119
  require_paths:
122
120
  - lib
123
121
  required_ruby_version: !ruby/object:Gem::Requirement
124
- none: false
125
122
  requirements:
126
- - - ! '>='
123
+ - - '>='
127
124
  - !ruby/object:Gem::Version
128
125
  version: '0'
129
- segments:
130
- - 0
131
- hash: -324934599838712109
132
126
  required_rubygems_version: !ruby/object:Gem::Requirement
133
- none: false
134
127
  requirements:
135
- - - ! '>='
128
+ - - '>='
136
129
  - !ruby/object:Gem::Version
137
130
  version: '0'
138
- segments:
139
- - 0
140
- hash: -324934599838712109
141
131
  requirements: []
142
132
  rubyforge_project:
143
- rubygems_version: 1.8.23
133
+ rubygems_version: 2.0.3
144
134
  signing_key:
145
- specification_version: 3
135
+ specification_version: 4
146
136
  summary: Twitter Streaming API client for EventMachine
147
137
  test_files: []
148
138
  has_rdoc: