twterm 1.2.4 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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