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 +4 -4
- data/.travis.yml +1 -0
- data/lib/twterm/client.rb +0 -2
- data/lib/twterm/streaming_client.rb +54 -49
- data/lib/twterm/version.rb +1 -1
- data/lib/twterm.rb +1 -2
- data/twterm.gemspec +2 -3
- metadata +9 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 224b8dc2d3619a2042816816273a0526a7cb9666
|
4
|
+
data.tar.gz: f1e33882f1154a83dfb5c744d1d613f4844aba48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57087dc1e7f65520af3ab90af85e7d8511855ca40696709173e8797aa2d1a004fba09dd2eebcb6ce8dd03cceaf03d530a8f5ad827a6ed318e05fb5940db644ee
|
7
|
+
data.tar.gz: 204684237b545673c87f0edb02fbf80b7c077095b59531ba5b1c43ff1055ccee7585354d9612dee02cf54fa88ebbaca72d250f81418c2d4a3c8d6153d1aa63ae
|
data/.travis.yml
CHANGED
data/lib/twterm/client.rb
CHANGED
@@ -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
|
-
|
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.
|
21
|
-
|
22
|
-
|
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
|
-
|
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
|
-
|
63
|
-
|
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 ||=
|
74
|
-
consumer_key
|
75
|
-
consumer_secret
|
76
|
-
|
77
|
-
|
78
|
-
|
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?
|
data/lib/twterm/version.rb
CHANGED
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.
|
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 '
|
25
|
-
spec.add_dependency 'twitter', '
|
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.
|
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
|
+
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:
|
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:
|
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.
|
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.
|
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.
|
241
|
+
rubygems_version: 2.6.8
|
256
242
|
signing_key:
|
257
243
|
specification_version: 4
|
258
244
|
summary: A full-featured CLI Twitter client
|