twterm 1.2.4 → 1.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cfb6aa751c551429a11611090d53bc7e12131069
4
- data.tar.gz: 2087324f9ac8e6243182382cc99330d82cda778e
3
+ metadata.gz: 224b8dc2d3619a2042816816273a0526a7cb9666
4
+ data.tar.gz: f1e33882f1154a83dfb5c744d1d613f4844aba48
5
5
  SHA512:
6
- metadata.gz: c653d2bb79a6dec49cdc5344e93466c2e24858828b683a7a529374efc21ab0f600a67fd08252c38df5b19098934275f589d79a71011739798e514fdbc83e9b81
7
- data.tar.gz: f6d47f77d40ad6cf2808190ce8a5311640252d28354a49b76f1ff56708ccba1a2990996f417dcb646bfa3d1d0d283a4c7b38521d89fff562fb5e290ae99f904e
6
+ metadata.gz: 57087dc1e7f65520af3ab90af85e7d8511855ca40696709173e8797aa2d1a004fba09dd2eebcb6ce8dd03cceaf03d530a8f5ad827a6ed318e05fb5940db644ee
7
+ data.tar.gz: 204684237b545673c87f0edb02fbf80b7c077095b59531ba5b1c43ff1055ccee7585354d9612dee02cf54fa88ebbaca72d250f81418c2d4a3c8d6153d1aa63ae
data/.travis.yml CHANGED
@@ -4,5 +4,6 @@ rvm:
4
4
  - 2.1
5
5
  - 2.2
6
6
  - 2.3.0
7
+ - 2.4.0
7
8
 
8
9
  script: bundle exec rspec
data/lib/twterm/client.rb CHANGED
@@ -25,8 +25,6 @@ module Twterm
25
25
  end
26
26
  end
27
27
 
28
- initialize_user_stream
29
-
30
28
  direct_message_manager
31
29
 
32
30
  @@instances << self
@@ -1,4 +1,5 @@
1
1
  require 'twterm/event/favorite'
2
+ require 'twterm/event/follow'
2
3
  require 'twterm/event/notification'
3
4
  require 'twterm/event/status/mention'
4
5
  require 'twterm/event/status/timeline'
@@ -12,71 +13,75 @@ module Twterm
12
13
  CONSUMER_SECRET = 'OFLKzrepRG2p1hq0nUB9j2S9ndFQoNTPheTpmOY0GYw55jGgS5'.freeze
13
14
 
14
15
  def connect_user_stream
15
- streaming_client.stop_stream
16
+ return if user_stream_connected?
16
17
 
17
18
  @streaming_thread = Thread.new do
18
19
  begin
19
20
  publish(Event::Notification.new(:message, 'Trying to connect to Twitter...'))
20
- streaming_client.userstream
21
- rescue EventMachine::ConnectionError
22
- publish(Event::Notification.new(:error, 'Connection failed'))
21
+ streaming_client.user do |event|
22
+ keep_alive!
23
+
24
+ case event
25
+ when Twitter::Tweet
26
+ status = Status.new(event)
27
+ publish(Event::Status::Timeline.new(status))
28
+ publish(Event::Status::Mention.new(status)) if status.text.include?('@%s' % screen_name)
29
+ when Twitter::Streaming::Event
30
+ case event.name
31
+ when :favorite
32
+ user = User.new(event.source)
33
+ status = Status.new(event.target_object)
34
+
35
+ event = Event::Favorite.new(user, status, self)
36
+ publish(event)
37
+ when :follow
38
+ source = User.new(event.source)
39
+ target = User.new(event.target)
40
+
41
+ event = Event::Follow.new(source, target, self)
42
+
43
+ publish(event)
44
+ end
45
+ when Twitter::DirectMessage
46
+ when Twitter::Streaming::FriendList
47
+ user_stream_connected!
48
+ when Twitter::Streaming::DeletedTweet
49
+ publish(Event::Status::Delete.new(event.id))
50
+ end
51
+ end
52
+ rescue Twitter::Error::TooManyRequests
53
+ publish(Event::Notification.new(:error, 'Rate limit exceeded'))
54
+ sleep 120
55
+ retry
56
+ rescue Errno::ENETUNREACH, Resolv::ResolvError
57
+ publish(Event::Notification.new(:error, 'Network is unavailable'))
23
58
  sleep 30
24
59
  retry
60
+ rescue Twitter::Error => e
61
+ publish(Event::Notification.new(:error, e.message))
25
62
  end
26
63
  end
27
64
  end
28
65
 
29
- def initialize_user_stream
30
- return if user_stream_initialized?
31
-
32
- streaming_client.on_friends do
33
- user_stream_connected!
34
- end
35
-
36
- streaming_client.on_timeline_status do |tweet|
37
- status = Status.new(tweet)
38
- publish(Event::Status::Timeline.new(status))
39
- publish(Event::Status::Mention.new(status)) if status.text.include?('@%s' % screen_name)
40
- end
41
-
42
- streaming_client.on_delete do |status_id|
43
- publish(Event::StatusDeleted.new(status_id))
44
- end
45
-
46
- streaming_client.on_event(:favorite) do |event|
47
- user = User.new(Twitter::User.new(event[:source]))
48
- status = Status.new(Twitter::Status.new(event[:target_object]))
49
-
50
- event = Event::Favorite.new(user, status, self)
51
- publish(event)
52
- end
53
-
54
- streaming_client.on_event(:follow) do |event|
55
- source = User.new(Twitter::User.new(event[:source]))
56
- target = User.new(Twitter::User.new(event[:target]))
57
-
58
- event = Event::Follow.new(source, target, self)
59
- publish(:followed, event)
60
- end
66
+ private
61
67
 
62
- streaming_client.on_no_data_received do
63
- user_stream_disconnected!
68
+ def keep_alive!
69
+ @keep_alive_timer.kill if @keep_alive_timer.is_a?(Thread)
70
+ @keep_alive_timer = Thread.new do
71
+ sleep(120)
72
+ @user_stream_connected = false
73
+ @streaming_thread.kill
64
74
  connect_user_stream
65
75
  end
66
-
67
- user_stream_initialized!
68
76
  end
69
77
 
70
- private
71
-
72
78
  def streaming_client
73
- @streaming_client ||= TweetStream::Client.new(
74
- consumer_key: CONSUMER_KEY,
75
- consumer_secret: CONSUMER_SECRET,
76
- oauth_token: @access_token,
77
- oauth_token_secret: @access_token_secret,
78
- auth_method: :oauth
79
- )
79
+ @streaming_client ||= Twitter::Streaming::Client.new do |config|
80
+ config.consumer_key = CONSUMER_KEY
81
+ config.consumer_secret = CONSUMER_SECRET
82
+ config.access_token = @access_token
83
+ config.access_token_secret = @access_token_secret
84
+ end
80
85
  end
81
86
 
82
87
  def user_stream_connected?
@@ -1,3 +1,3 @@
1
1
  module Twterm
2
- VERSION = '1.2.4'
2
+ VERSION = '1.3.0'
3
3
  end
data/lib/twterm.rb CHANGED
@@ -9,7 +9,6 @@ require 'oauth'
9
9
  require 'readline'
10
10
  require 'singleton'
11
11
  require 'set'
12
- require 'tweetstream'
13
12
  require 'twitter'
14
13
  require 'twitter-text'
15
14
  require 'yaml'
@@ -65,6 +64,6 @@ require 'twterm/version'
65
64
 
66
65
  module Twterm
67
66
  class Conf
68
- REQUIRE_VERSION = '1.1.1'
67
+ REQUIRE_VERSION = '1.3.0'
69
68
  end
70
69
  end
data/twterm.gemspec CHANGED
@@ -21,9 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'curses', '>= 1.0.1'
22
22
  spec.add_dependency 'launchy', '>= 2.4.3'
23
23
  spec.add_dependency 'oauth', '>= 0.4.7'
24
- spec.add_dependency 'tweetstream', '~> 2.6'
25
- spec.add_dependency 'twitter', '~> 5.13'
26
- spec.add_dependency 'twitter-text', '>= 1.11.0'
24
+ spec.add_dependency 'twitter', '~> 6.0.0'
25
+ spec.add_dependency 'twitter-text', '1.14.0'
27
26
 
28
27
  spec.add_development_dependency 'bundler', '~> 1.8'
29
28
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twterm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Kameoka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-28 00:00:00.000000000 Z
11
+ date: 2016-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -52,48 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.4.7
55
- - !ruby/object:Gem::Dependency
56
- name: tweetstream
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.6'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.6'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: twitter
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '5.13'
61
+ version: 6.0.0
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '5.13'
68
+ version: 6.0.0
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: twitter-text
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ">="
73
+ - - '='
88
74
  - !ruby/object:Gem::Version
89
- version: 1.11.0
75
+ version: 1.14.0
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ">="
80
+ - - '='
95
81
  - !ruby/object:Gem::Version
96
- version: 1.11.0
82
+ version: 1.14.0
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: bundler
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -252,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
238
  version: '0'
253
239
  requirements: []
254
240
  rubyforge_project:
255
- rubygems_version: 2.6.7
241
+ rubygems_version: 2.6.8
256
242
  signing_key:
257
243
  specification_version: 4
258
244
  summary: A full-featured CLI Twitter client