From b987438b66b31e274d18a52750ebe08265c09a06 Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Tue, 14 Jan 2020 15:52:58 +0100 Subject: [PATCH 1/3] Bump http dependency version --- lib/twitter/rest/request.rb | 2 +- spec/twitter/rest/request_spec.rb | 4 ++-- twitter.gemspec | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/twitter/rest/request.rb b/lib/twitter/rest/request.rb index 423b1d403..c5b2d1fd1 100644 --- a/lib/twitter/rest/request.rb +++ b/lib/twitter/rest/request.rb @@ -118,7 +118,7 @@ def symbolize_keys!(object) # @return [HTTP::Client, HTTP] def http_client client = @client.proxy ? HTTP.via(*proxy) : HTTP - client = client.timeout(:per_operation, connect: @client.timeouts[:connect], read: @client.timeouts[:read], write: @client.timeouts[:write]) if @client.timeouts + client = client.timeout(connect: @client.timeouts[:connect], read: @client.timeouts[:read], write: @client.timeouts[:write]) if @client.timeouts client end diff --git a/spec/twitter/rest/request_spec.rb b/spec/twitter/rest/request_spec.rb index d13dfec7b..31a0103e9 100644 --- a/spec/twitter/rest/request_spec.rb +++ b/spec/twitter/rest/request_spec.rb @@ -41,7 +41,7 @@ end it 'requests with given timeout settings' do stub_post('/1.1/statuses/update.json').with(body: {status: 'Update'}).to_return(body: fixture('status.json'), headers: {content_type: 'application/json; charset=utf-8'}) - expect_any_instance_of(HTTP::Client).to receive(:timeout).with(:per_operation, connect: 2, read: 2, write: 3).and_call_original + expect_any_instance_of(HTTP::Client).to receive(:timeout).with(connect: 2, read: 2, write: 3).and_call_original @client.update('Update') end end @@ -53,7 +53,7 @@ end it 'requests with given timeout settings' do stub_post('/1.1/statuses/update.json').with(body: {status: 'Update'}).to_return(body: fixture('status.json'), headers: {content_type: 'application/json; charset=utf-8'}) - expect(HTTP).to receive(:timeout).with(:per_operation, connect: 2, read: 2, write: 3).and_call_original + expect(HTTP).to receive(:timeout).with(connect: 2, read: 2, write: 3).and_call_original @client.update('Update') end end diff --git a/twitter.gemspec b/twitter.gemspec index 07362fe16..0a1647776 100644 --- a/twitter.gemspec +++ b/twitter.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'addressable', '~> 2.3' spec.add_dependency 'buftok', '~> 0.2.0' spec.add_dependency 'equalizer', '~> 0.0.11' - spec.add_dependency 'http', '~> 3.0' + spec.add_dependency 'http', '~> 4.0' spec.add_dependency 'http-form_data', '~> 2.0' spec.add_dependency 'http_parser.rb', '~> 0.6.0' spec.add_dependency 'memoizable', '~> 0.4.0' From 5fa82db30c39fbfda247ab33d909f5e6de1292cc Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Wed, 15 Jan 2020 09:20:49 +0100 Subject: [PATCH 2/3] Fix bundler for travis --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index b63f07e6f..24658c907 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,9 @@ env: global: - JRUBY_OPTS="$JRUBY_OPTS --debug" +before_install: + - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true + - gem install bundler -v '< 2' matrix: allow_failures: - rvm: jruby-head From 939365f6e788873b13d38f8c77c4e50720a3ae94 Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Thu, 16 Jan 2020 21:01:16 +0100 Subject: [PATCH 3/3] Fix rubocop issues --- lib/twitter/creatable.rb | 1 + lib/twitter/cursor.rb | 1 + lib/twitter/enumerable.rb | 1 + lib/twitter/null_object.rb | 2 ++ lib/twitter/profile.rb | 4 ++-- lib/twitter/rest/direct_messages.rb | 4 +--- lib/twitter/rest/lists.rb | 1 + lib/twitter/rest/request.rb | 1 + lib/twitter/rest/timelines.rb | 1 + lib/twitter/streaming/response.rb | 1 + lib/twitter/utils.rb | 2 ++ 11 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/twitter/creatable.rb b/lib/twitter/creatable.rb index 0a8aa221d..6d6cd4500 100644 --- a/lib/twitter/creatable.rb +++ b/lib/twitter/creatable.rb @@ -11,6 +11,7 @@ module Creatable def created_at time = @attrs[:created_at] return if time.nil? + time = Time.parse(time) unless time.is_a?(Time) time.utc end diff --git a/lib/twitter/cursor.rb b/lib/twitter/cursor.rb index c1e32b425..cf789e7fe 100644 --- a/lib/twitter/cursor.rb +++ b/lib/twitter/cursor.rb @@ -42,6 +42,7 @@ def next_cursor def last? return false if next_cursor.is_a?(String) return true if next_cursor.nil? + next_cursor.zero? end diff --git a/lib/twitter/enumerable.rb b/lib/twitter/enumerable.rb index 3e1f153d3..1827e5c87 100644 --- a/lib/twitter/enumerable.rb +++ b/lib/twitter/enumerable.rb @@ -5,6 +5,7 @@ module Enumerable # @return [Enumerator] def each(start = 0) return to_enum(:each, start) unless block_given? + Array(@collection[start..-1]).each do |element| yield(element) end diff --git a/lib/twitter/null_object.rb b/lib/twitter/null_object.rb index baea95d33..fd391cffa 100644 --- a/lib/twitter/null_object.rb +++ b/lib/twitter/null_object.rb @@ -19,11 +19,13 @@ def respond_to?(*) def instance_of?(klass) raise(TypeError, 'class or module required') unless klass.is_a?(Class) + self.class == klass end def kind_of?(mod) raise(TypeError, 'class or module required') unless mod.is_a?(Module) + self.class.ancestors.include?(mod) end diff --git a/lib/twitter/profile.rb b/lib/twitter/profile.rb index 8646aff88..037d8dca0 100644 --- a/lib/twitter/profile.rb +++ b/lib/twitter/profile.rb @@ -4,8 +4,8 @@ module Twitter module Profile - PROFILE_IMAGE_SUFFIX_REGEX = /_normal(\.gif|\.jpe?g|\.png)$/i - PREDICATE_URI_METHOD_REGEX = /_uri\?$/ + PROFILE_IMAGE_SUFFIX_REGEX = /_normal(\.gif|\.jpe?g|\.png)$/i.freeze + PREDICATE_URI_METHOD_REGEX = /_uri\?$/.freeze include Memoizable class << self diff --git a/lib/twitter/rest/direct_messages.rb b/lib/twitter/rest/direct_messages.rb index 6561e2992..d2f2fecfa 100644 --- a/lib/twitter/rest/direct_messages.rb +++ b/lib/twitter/rest/direct_messages.rb @@ -187,9 +187,7 @@ def create_direct_message(user_id, text, options = {}) def create_direct_message_event(*args) arguments = Twitter::Arguments.new(args) options = arguments.options.dup - if arguments.length >= 2 - options[:event] = {type: 'message_create', message_create: {target: {recipient_id: extract_id(arguments[0])}, message_data: {text: arguments[1]}}} - end + options[:event] = {type: 'message_create', message_create: {target: {recipient_id: extract_id(arguments[0])}, message_data: {text: arguments[1]}}} if arguments.length >= 2 response = Twitter::REST::Request.new(self, :json_post, '/1.1/direct_messages/events/new.json', options).perform Twitter::DirectMessageEvent.new(response[:event]) end diff --git a/lib/twitter/rest/lists.rb b/lib/twitter/rest/lists.rb index 48f17bc6a..ffb547cd0 100644 --- a/lib/twitter/rest/lists.rb +++ b/lib/twitter/rest/lists.rb @@ -484,6 +484,7 @@ def merge_list_and_owner!(hash, list) # @return [Hash] def merge_owner!(hash, user) return hash if hash[:owner_id] || hash[:owner_screen_name] + if user merge_user!(hash, user, 'owner') hash[:owner_id] = hash.delete(:owner_user_id) unless hash[:owner_user_id].nil? diff --git a/lib/twitter/rest/request.rb b/lib/twitter/rest/request.rb index c5b2d1fd1..37e04d917 100644 --- a/lib/twitter/rest/request.rb +++ b/lib/twitter/rest/request.rb @@ -79,6 +79,7 @@ def content_type(basename) def fail_or_return_response_body(code, body, headers) error = error(code, body, headers) raise(error) if error + @rate_limit = Twitter::RateLimit.new(headers) body end diff --git a/lib/twitter/rest/timelines.rb b/lib/twitter/rest/timelines.rb index a143bf2d7..248839969 100644 --- a/lib/twitter/rest/timelines.rb +++ b/lib/twitter/rest/timelines.rb @@ -188,6 +188,7 @@ def collect_with_count(count) def collect_with_max_id(collection = [], max_id = nil, &block) tweets = yield(max_id) return collection if tweets.nil? + collection += tweets tweets.empty? ? collection.flatten : collect_with_max_id(collection, tweets.last.id - 1, &block) end diff --git a/lib/twitter/streaming/response.rb b/lib/twitter/streaming/response.rb index c301d8477..31b98fb0c 100644 --- a/lib/twitter/streaming/response.rb +++ b/lib/twitter/streaming/response.rb @@ -27,6 +27,7 @@ def on_headers_complete(_headers) def on_body(data) @tokenizer.extract(data).each do |line| next if line.empty? + @block.call(JSON.parse(line, symbolize_names: true)) end end diff --git a/lib/twitter/utils.rb b/lib/twitter/utils.rb index 7ab525681..e815a4b98 100644 --- a/lib/twitter/utils.rb +++ b/lib/twitter/utils.rb @@ -9,6 +9,7 @@ module Utils # @return [Array, Enumerator] def flat_pmap(enumerable) return to_enum(:flat_pmap, enumerable) unless block_given? + pmap(enumerable, &Proc.new).flatten(1) end @@ -19,6 +20,7 @@ def flat_pmap(enumerable) # @return [Array, Enumerator] def pmap(enumerable) return to_enum(:pmap, enumerable) unless block_given? + if enumerable.count == 1 enumerable.collect { |object| yield(object) } else