twitter 6.2.0 → 7.0.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/CHANGELOG.md +19 -7
- data/LICENSE.md +1 -1
- data/README.md +9 -12
- data/lib/twitter.rb +5 -0
- data/lib/twitter/client.rb +5 -5
- data/lib/twitter/creatable.rb +5 -1
- data/lib/twitter/cursor.rb +12 -2
- data/lib/twitter/direct_message.rb +2 -0
- data/lib/twitter/direct_message_event.rb +44 -0
- data/lib/twitter/direct_messages/welcome_message.rb +17 -0
- data/lib/twitter/direct_messages/welcome_message_rule.rb +12 -0
- data/lib/twitter/direct_messages/welcome_message_rule_wrapper.rb +36 -0
- data/lib/twitter/direct_messages/welcome_message_wrapper.rb +42 -0
- data/lib/twitter/enumerable.rb +14 -3
- data/lib/twitter/error.rb +48 -6
- data/lib/twitter/null_object.rb +15 -1
- data/lib/twitter/premium_search_results.rb +67 -0
- data/lib/twitter/profile.rb +2 -2
- data/lib/twitter/rate_limit.rb +2 -2
- data/lib/twitter/rest/account_activity.rb +99 -0
- data/lib/twitter/rest/api.rb +6 -0
- data/lib/twitter/rest/direct_messages.rb +131 -42
- data/lib/twitter/rest/direct_messages/welcome_messages.rb +90 -0
- data/lib/twitter/rest/favorites.rb +2 -2
- data/lib/twitter/rest/lists.rb +1 -0
- data/lib/twitter/rest/premium_search.rb +34 -0
- data/lib/twitter/rest/request.rb +39 -13
- data/lib/twitter/rest/search.rb +4 -3
- data/lib/twitter/rest/timelines.rb +1 -0
- data/lib/twitter/rest/tweets.rb +2 -31
- data/lib/twitter/rest/upload_utils.rb +68 -0
- data/lib/twitter/rest/utils.rb +24 -7
- data/lib/twitter/search_results.rb +4 -3
- data/lib/twitter/streaming/client.rb +5 -1
- data/lib/twitter/streaming/connection.rb +16 -3
- data/lib/twitter/streaming/message_parser.rb +1 -1
- data/lib/twitter/streaming/response.rb +1 -0
- data/lib/twitter/tweet.rb +10 -1
- data/lib/twitter/utils.rb +4 -2
- data/lib/twitter/version.rb +2 -2
- data/twitter.gemspec +3 -4
- metadata +16 -21
@@ -9,7 +9,7 @@ module Twitter
|
|
9
9
|
include Twitter::Enumerable
|
10
10
|
include Twitter::Utils
|
11
11
|
# @return [Hash]
|
12
|
-
attr_reader :attrs
|
12
|
+
attr_reader :attrs, :rate_limit
|
13
13
|
alias to_h attrs
|
14
14
|
alias to_hash to_h
|
15
15
|
|
@@ -48,8 +48,9 @@ module Twitter
|
|
48
48
|
|
49
49
|
# @return [Hash]
|
50
50
|
def fetch_next_page
|
51
|
-
response = Twitter::REST::Request.new(@client, @request_method, @path, @options.merge(next_page))
|
52
|
-
self.attrs = response
|
51
|
+
response = Twitter::REST::Request.new(@client, @request_method, @path, @options.merge(next_page))
|
52
|
+
self.attrs = response.perform
|
53
|
+
@rate_limit = response.rate_limit
|
53
54
|
end
|
54
55
|
|
55
56
|
# @param attrs [Hash]
|
@@ -105,6 +105,10 @@ module Twitter
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
+
def close
|
109
|
+
@connection.close
|
110
|
+
end
|
111
|
+
|
108
112
|
private
|
109
113
|
|
110
114
|
def request(method, uri, params)
|
@@ -112,7 +116,7 @@ module Twitter
|
|
112
116
|
headers = Twitter::Headers.new(self, method, uri, params).request_headers
|
113
117
|
request = HTTP::Request.new(verb: method, uri: uri + '?' + to_url_params(params), headers: headers, proxy: proxy)
|
114
118
|
response = Streaming::Response.new do |data|
|
115
|
-
if item = Streaming::MessageParser.parse(data) # rubocop:disable AssignmentInCondition
|
119
|
+
if item = Streaming::MessageParser.parse(data) # rubocop:disable Lint/AssignmentInCondition
|
116
120
|
yield(item)
|
117
121
|
end
|
118
122
|
end
|
@@ -11,14 +11,23 @@ module Twitter
|
|
11
11
|
@tcp_socket_class = options.fetch(:tcp_socket_class) { TCPSocket }
|
12
12
|
@ssl_socket_class = options.fetch(:ssl_socket_class) { OpenSSL::SSL::SSLSocket }
|
13
13
|
@using_ssl = options.fetch(:using_ssl) { false }
|
14
|
+
@write_pipe = nil
|
14
15
|
end
|
15
16
|
|
16
|
-
def stream(request, response)
|
17
|
+
def stream(request, response) # rubocop:disable Metrics/MethodLength
|
17
18
|
client = connect(request)
|
18
19
|
request.stream(client)
|
19
|
-
|
20
|
-
|
20
|
+
read_pipe, @write_pipe = IO.pipe
|
21
|
+
loop do
|
22
|
+
read_ios, _write_ios, _exception_ios = IO.select([read_pipe, client])
|
23
|
+
case read_ios.first
|
24
|
+
when client
|
25
|
+
response << client.readpartial(1024)
|
26
|
+
when read_pipe
|
27
|
+
break
|
28
|
+
end
|
21
29
|
end
|
30
|
+
client.close
|
22
31
|
end
|
23
32
|
|
24
33
|
def connect(request)
|
@@ -30,6 +39,10 @@ module Twitter
|
|
30
39
|
ssl_client.connect
|
31
40
|
end
|
32
41
|
|
42
|
+
def close
|
43
|
+
@write_pipe&.write('q')
|
44
|
+
end
|
45
|
+
|
33
46
|
private
|
34
47
|
|
35
48
|
def new_tcp_socket(host, port)
|
@@ -8,7 +8,7 @@ require 'twitter/tweet'
|
|
8
8
|
module Twitter
|
9
9
|
module Streaming
|
10
10
|
class MessageParser
|
11
|
-
def self.parse(data) # rubocop:disable AbcSize, CyclomaticComplexity, MethodLength, PerceivedComplexity
|
11
|
+
def self.parse(data) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
12
12
|
if data[:id]
|
13
13
|
Tweet.new(data)
|
14
14
|
elsif data[:event]
|
data/lib/twitter/tweet.rb
CHANGED
@@ -10,7 +10,7 @@ module Twitter
|
|
10
10
|
attr_reader :filter_level, :in_reply_to_screen_name, :lang, :source, :text
|
11
11
|
# @return [Integer]
|
12
12
|
attr_reader :favorite_count, :in_reply_to_status_id, :in_reply_to_user_id,
|
13
|
-
:retweet_count
|
13
|
+
:quote_count, :reply_count, :retweet_count
|
14
14
|
alias in_reply_to_tweet_id in_reply_to_status_id
|
15
15
|
alias reply? in_reply_to_user_id?
|
16
16
|
object_attr_reader :GeoFactory, :geo
|
@@ -29,6 +29,15 @@ module Twitter
|
|
29
29
|
predicate_attr_reader :favorited, :possibly_sensitive, :retweeted,
|
30
30
|
:truncated
|
31
31
|
|
32
|
+
# Initializes a new object
|
33
|
+
#
|
34
|
+
# @param attrs [Hash]
|
35
|
+
# @return [Twitter::Tweet]
|
36
|
+
def initialize(attrs = {})
|
37
|
+
attrs[:text] = attrs[:full_text] if attrs[:text].nil? && !attrs[:full_text].nil?
|
38
|
+
super
|
39
|
+
end
|
40
|
+
|
32
41
|
# @note May be > 280 characters.
|
33
42
|
# @return [String]
|
34
43
|
def full_text
|
data/lib/twitter/utils.rb
CHANGED
@@ -7,9 +7,10 @@ module Twitter
|
|
7
7
|
#
|
8
8
|
# @param enumerable [Enumerable]
|
9
9
|
# @return [Array, Enumerator]
|
10
|
-
def flat_pmap(enumerable)
|
10
|
+
def flat_pmap(enumerable, &block)
|
11
11
|
return to_enum(:flat_pmap, enumerable) unless block_given?
|
12
|
-
|
12
|
+
|
13
|
+
pmap(enumerable, &block).flatten(1)
|
13
14
|
end
|
14
15
|
|
15
16
|
# Returns a new array with the results of running block once for every element in enumerable.
|
@@ -19,6 +20,7 @@ module Twitter
|
|
19
20
|
# @return [Array, Enumerator]
|
20
21
|
def pmap(enumerable)
|
21
22
|
return to_enum(:pmap, enumerable) unless block_given?
|
23
|
+
|
22
24
|
if enumerable.count == 1
|
23
25
|
enumerable.collect { |object| yield(object) }
|
24
26
|
else
|
data/lib/twitter/version.rb
CHANGED
data/twitter.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'twitter/version'
|
4
4
|
|
@@ -6,14 +6,13 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.add_dependency 'addressable', '~> 2.3'
|
7
7
|
spec.add_dependency 'buftok', '~> 0.2.0'
|
8
8
|
spec.add_dependency 'equalizer', '~> 0.0.11'
|
9
|
-
spec.add_dependency 'http', '~>
|
9
|
+
spec.add_dependency 'http', '~> 4.0'
|
10
10
|
spec.add_dependency 'http-form_data', '~> 2.0'
|
11
11
|
spec.add_dependency 'http_parser.rb', '~> 0.6.0'
|
12
12
|
spec.add_dependency 'memoizable', '~> 0.4.0'
|
13
13
|
spec.add_dependency 'multipart-post', '~> 2.0'
|
14
14
|
spec.add_dependency 'naught', '~> 1.0'
|
15
15
|
spec.add_dependency 'simple_oauth', '~> 0.3.0'
|
16
|
-
spec.add_development_dependency 'bundler', '~> 1.0'
|
17
16
|
spec.authors = ['Erik Michaels-Ober', 'John Nunemaker', 'Wynn Netherland', 'Steve Richert', 'Steve Agalloco']
|
18
17
|
spec.description = 'A Ruby interface to the Twitter API.'
|
19
18
|
spec.email = %w[sferik@gmail.com]
|
@@ -22,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
22
21
|
spec.licenses = %w[MIT]
|
23
22
|
spec.name = 'twitter'
|
24
23
|
spec.require_paths = %w[lib]
|
25
|
-
spec.required_ruby_version = '>=
|
24
|
+
spec.required_ruby_version = '>= 2.3'
|
26
25
|
spec.summary = spec.description
|
27
26
|
spec.version = Twitter::Version
|
28
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Michaels-Ober
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2020-02-12 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: addressable
|
@@ -62,14 +62,14 @@ dependencies:
|
|
62
62
|
requirements:
|
63
63
|
- - "~>"
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
65
|
+
version: '4.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
68
|
version_requirements: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
72
|
+
version: '4.0'
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: http-form_data
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,20 +154,6 @@ dependencies:
|
|
154
154
|
- - "~>"
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: 0.3.0
|
157
|
-
- !ruby/object:Gem::Dependency
|
158
|
-
name: bundler
|
159
|
-
requirement: !ruby/object:Gem::Requirement
|
160
|
-
requirements:
|
161
|
-
- - "~>"
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: '1.0'
|
164
|
-
type: :development
|
165
|
-
prerelease: false
|
166
|
-
version_requirements: !ruby/object:Gem::Requirement
|
167
|
-
requirements:
|
168
|
-
- - "~>"
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
version: '1.0'
|
171
157
|
description: A Ruby interface to the Twitter API.
|
172
158
|
email:
|
173
159
|
- sferik@gmail.com
|
@@ -189,6 +175,11 @@ files:
|
|
189
175
|
- lib/twitter/creatable.rb
|
190
176
|
- lib/twitter/cursor.rb
|
191
177
|
- lib/twitter/direct_message.rb
|
178
|
+
- lib/twitter/direct_message_event.rb
|
179
|
+
- lib/twitter/direct_messages/welcome_message.rb
|
180
|
+
- lib/twitter/direct_messages/welcome_message_rule.rb
|
181
|
+
- lib/twitter/direct_messages/welcome_message_rule_wrapper.rb
|
182
|
+
- lib/twitter/direct_messages/welcome_message_wrapper.rb
|
192
183
|
- lib/twitter/entities.rb
|
193
184
|
- lib/twitter/entity.rb
|
194
185
|
- lib/twitter/entity/hashtag.rb
|
@@ -216,19 +207,23 @@ files:
|
|
216
207
|
- lib/twitter/null_object.rb
|
217
208
|
- lib/twitter/oembed.rb
|
218
209
|
- lib/twitter/place.rb
|
210
|
+
- lib/twitter/premium_search_results.rb
|
219
211
|
- lib/twitter/profile.rb
|
220
212
|
- lib/twitter/profile_banner.rb
|
221
213
|
- lib/twitter/rate_limit.rb
|
222
214
|
- lib/twitter/relationship.rb
|
215
|
+
- lib/twitter/rest/account_activity.rb
|
223
216
|
- lib/twitter/rest/api.rb
|
224
217
|
- lib/twitter/rest/client.rb
|
225
218
|
- lib/twitter/rest/direct_messages.rb
|
219
|
+
- lib/twitter/rest/direct_messages/welcome_messages.rb
|
226
220
|
- lib/twitter/rest/favorites.rb
|
227
221
|
- lib/twitter/rest/friends_and_followers.rb
|
228
222
|
- lib/twitter/rest/help.rb
|
229
223
|
- lib/twitter/rest/lists.rb
|
230
224
|
- lib/twitter/rest/oauth.rb
|
231
225
|
- lib/twitter/rest/places_and_geo.rb
|
226
|
+
- lib/twitter/rest/premium_search.rb
|
232
227
|
- lib/twitter/rest/request.rb
|
233
228
|
- lib/twitter/rest/saved_searches.rb
|
234
229
|
- lib/twitter/rest/search.rb
|
@@ -238,6 +233,7 @@ files:
|
|
238
233
|
- lib/twitter/rest/trends.rb
|
239
234
|
- lib/twitter/rest/tweets.rb
|
240
235
|
- lib/twitter/rest/undocumented.rb
|
236
|
+
- lib/twitter/rest/upload_utils.rb
|
241
237
|
- lib/twitter/rest/users.rb
|
242
238
|
- lib/twitter/rest/utils.rb
|
243
239
|
- lib/twitter/saved_search.rb
|
@@ -275,15 +271,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
275
271
|
requirements:
|
276
272
|
- - ">="
|
277
273
|
- !ruby/object:Gem::Version
|
278
|
-
version:
|
274
|
+
version: '2.3'
|
279
275
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
280
276
|
requirements:
|
281
277
|
- - ">="
|
282
278
|
- !ruby/object:Gem::Version
|
283
279
|
version: '0'
|
284
280
|
requirements: []
|
285
|
-
|
286
|
-
rubygems_version: 2.7.2
|
281
|
+
rubygems_version: 3.1.2
|
287
282
|
signing_key:
|
288
283
|
specification_version: 4
|
289
284
|
summary: A Ruby interface to the Twitter API.
|