diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index ade0634b0..9bf23fa4b 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2019-02-20 22:19:54 +0100 using RuboCop version 0.65.0. +# on 2019-02-20 22:39:41 +0100 using RuboCop version 0.65.0. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -82,41 +82,6 @@ Layout/ElseAlignment: - 'lib/faraday/options.rb' - 'lib/faraday/utils.rb' -# Offense count: 19 -# Cop supports --auto-correct. -Layout/EmptyLineAfterGuardClause: - Exclude: - - 'lib/faraday/adapter/httpclient.rb' - - 'lib/faraday/adapter/net_http.rb' - - 'lib/faraday/adapter/test.rb' - - 'lib/faraday/connection.rb' - - 'lib/faraday/dependency_loader.rb' - - 'lib/faraday/encoders/flat_params_encoder.rb' - - 'lib/faraday/encoders/nested_params_encoder.rb' - - 'lib/faraday/options.rb' - - 'lib/faraday/options/env.rb' - - 'lib/faraday/rack_builder.rb' - - 'lib/faraday/request/retry.rb' - - 'lib/faraday/response.rb' - - 'spec/support/shared_examples/adapter.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: AllowAdjacentOneLineDefs, NumberOfEmptyLines. -Layout/EmptyLineBetweenDefs: - Exclude: - - 'lib/faraday/rack_builder.rb' - - 'spec/support/fake_safe_buffer.rb' - -# Offense count: 4 -# Cop supports --auto-correct. -Layout/EmptyLines: - Exclude: - - 'lib/faraday/adapter/em_synchrony/parallel_manager.rb' - - 'script/generate_certs' - - 'spec/faraday/options/options_spec.rb' - - 'spec/support/shared_examples/request_method.rb' - # Offense count: 1 # Cop supports --auto-correct. Layout/EmptyLinesAroundAccessModifier: @@ -185,12 +150,6 @@ Layout/IndentationWidth: - 'lib/faraday/utils.rb' - 'test/live_server.rb' -# Offense count: 1 -# Cop supports --auto-correct. -Layout/LeadingCommentSpace: - Exclude: - - 'test/adapters/em_synchrony_test.rb' - # Offense count: 2 # Cop supports --auto-correct. Layout/MultilineBlockLayout: diff --git a/lib/faraday/adapter/em_synchrony/parallel_manager.rb b/lib/faraday/adapter/em_synchrony/parallel_manager.rb index c9c58a886..adb6f5877 100644 --- a/lib/faraday/adapter/em_synchrony/parallel_manager.rb +++ b/lib/faraday/adapter/em_synchrony/parallel_manager.rb @@ -35,7 +35,6 @@ def run result end - private # The request queue. diff --git a/lib/faraday/adapter/httpclient.rb b/lib/faraday/adapter/httpclient.rb index 6fcc5d5f6..a46cb9d9f 100644 --- a/lib/faraday/adapter/httpclient.rb +++ b/lib/faraday/adapter/httpclient.rb @@ -117,6 +117,7 @@ def configure_client # @return [OpenSSL::X509::Store] def ssl_cert_store(ssl) return ssl[:cert_store] if ssl[:cert_store] + # Memoize the cert store so that the same one is passed to # HTTPClient each time, to avoid resyncing SSL sesions when # it's changed diff --git a/lib/faraday/adapter/net_http.rb b/lib/faraday/adapter/net_http.rb index 2cd941bb3..3786c2e1c 100644 --- a/lib/faraday/adapter/net_http.rb +++ b/lib/faraday/adapter/net_http.rb @@ -167,6 +167,7 @@ def configure_request(http, req) def ssl_cert_store(ssl) return ssl[:cert_store] if ssl[:cert_store] return @cert_store if @cert_store + # Use the default cert store by default, i.e. system ca certs @cert_store = OpenSSL::X509::Store.new @cert_store.set_default_paths diff --git a/lib/faraday/adapter/test.rb b/lib/faraday/adapter/test.rb index 1ec70f96b..26ec346ee 100644 --- a/lib/faraday/adapter/test.rb +++ b/lib/faraday/adapter/test.rb @@ -55,6 +55,7 @@ def empty? def match(request_method, host, path, headers, body) return false if !@stack.key?(request_method) + stack = @stack[request_method] consumed = (@consumed[request_method] ||= []) diff --git a/lib/faraday/connection.rb b/lib/faraday/connection.rb index 6f278efca..302f285ca 100644 --- a/lib/faraday/connection.rb +++ b/lib/faraday/connection.rb @@ -503,6 +503,7 @@ def set_authorization_header(header_type, *args) def proxy_from_env(url) return if Faraday.ignore_env_proxy + uri = nil if URI.parse('').respond_to?(:find_proxy) case url @@ -531,6 +532,7 @@ def find_default_proxy def proxy_for_request(url) return self.proxy if @manual_proxy + if url && Utils.URI(url).absolute? proxy_from_env(url) else diff --git a/lib/faraday/dependency_loader.rb b/lib/faraday/dependency_loader.rb index c46960207..1b219e175 100644 --- a/lib/faraday/dependency_loader.rb +++ b/lib/faraday/dependency_loader.rb @@ -12,6 +12,7 @@ def dependency(lib = nil) def new(*) raise "missing dependency for #{self}: #{load_error.message}" unless loaded? + super end diff --git a/lib/faraday/encoders/flat_params_encoder.rb b/lib/faraday/encoders/flat_params_encoder.rb index 2c52b19ed..8413da9a9 100644 --- a/lib/faraday/encoders/flat_params_encoder.rb +++ b/lib/faraday/encoders/flat_params_encoder.rb @@ -46,6 +46,7 @@ def self.encode(params) def self.decode(query) empty_accumulator = {} return nil if query == nil + split_query = (query.split('&').map do |pair| pair.split('=', 2) if pair && !pair.empty? end).compact diff --git a/lib/faraday/encoders/nested_params_encoder.rb b/lib/faraday/encoders/nested_params_encoder.rb index 782773cb0..02c38f240 100644 --- a/lib/faraday/encoders/nested_params_encoder.rb +++ b/lib/faraday/encoders/nested_params_encoder.rb @@ -48,6 +48,7 @@ def self.encode(params) elsif value.is_a?(Array) new_parent = "#{parent}%5B%5D" return new_parent if value.empty? + buffer = "" value.each_with_index do |val, i| buffer << "#{to_query.call(new_parent, val)}&" @@ -81,6 +82,7 @@ def self.decode(query) params = {} query.split("&").each do |pair| next if pair.empty? + key, value = pair.split("=", 2) key = unescape(key) value = unescape(value.gsub(/\+/, ' ')) if value diff --git a/lib/faraday/options.rb b/lib/faraday/options.rb index e04f8246c..4bc5523de 100644 --- a/lib/faraday/options.rb +++ b/lib/faraday/options.rb @@ -10,6 +10,7 @@ def self.from(value) # Public def each return to_enum(:each) unless block_given? + members.each do |key| yield(key.to_sym, send(key)) end @@ -98,6 +99,7 @@ def empty? # Public def each_key return to_enum(:each_key) unless block_given? + keys.each do |key| yield(key) end @@ -113,6 +115,7 @@ def key?(key) # Public def each_value return to_enum(:each_value) unless block_given? + values.each do |value| yield(value) end diff --git a/lib/faraday/options/env.rb b/lib/faraday/options/env.rb index dfa86c8a5..197a5d598 100644 --- a/lib/faraday/options/env.rb +++ b/lib/faraday/options/env.rb @@ -77,6 +77,7 @@ def self.from(value) # @param key [Object] def [](key) return self[current_body] if key == :body + if in_member_set?(key) super(key) else @@ -88,6 +89,7 @@ def [](key) # @param value [Object] def []=(key, value) return super(current_body, value) if key == :body + if in_member_set?(key) super(key, value) else diff --git a/lib/faraday/rack_builder.rb b/lib/faraday/rack_builder.rb index 7c3448a22..ac0706f88 100644 --- a/lib/faraday/rack_builder.rb +++ b/lib/faraday/rack_builder.rb @@ -35,6 +35,7 @@ def initialize(klass, *args, &block) end def klass() @@constants[@name] end + def inspect() @name end def ==(other) @@ -226,6 +227,7 @@ def use_symbol(mod, key, *args, &block) def assert_index(index) idx = index.is_a?(Integer) ? index : @handlers.index(index) raise "No such handler: #{index.inspect}" unless idx + idx end end diff --git a/lib/faraday/request/retry.rb b/lib/faraday/request/retry.rb index 4dcb8ca71..6da1268cc 100644 --- a/lib/faraday/request/retry.rb +++ b/lib/faraday/request/retry.rb @@ -175,6 +175,7 @@ def retry_request?(env, exception) def rewind_files(body) return unless body.is_a?(Hash) + body.each do |_, value| if value.is_a? UploadIO value.rewind diff --git a/lib/faraday/response.rb b/lib/faraday/response.rb index 50ccf8edb..6d5a8092b 100644 --- a/lib/faraday/response.rb +++ b/lib/faraday/response.rb @@ -63,6 +63,7 @@ def on_complete def finish(env) raise "response already finished" if finished? + @env = env.is_a?(Env) ? env : Env.from(env) @on_complete_callbacks.each { |callback| callback.call(@env) } return self @@ -92,6 +93,7 @@ def marshal_load(env) # Useful for applying request params after restoring a marshalled Response. def apply_request(request_env) raise "response didn't finish yet" unless finished? + @env = Env.from(request_env).update(@env) return self end diff --git a/script/generate_certs b/script/generate_certs index 30063f74f..c697ce4f4 100755 --- a/script/generate_certs +++ b/script/generate_certs @@ -30,7 +30,6 @@ def write(file, contents, env_var) puts %(export #{env_var}="#{file}") if $shell end - # One cert / CA for ease of testing when ignoring verification cert, key = create_self_signed_cert(1024, [['CN', 'localhost']], 'Faraday Test CA') write 'tmp/faraday-cert.key', key, 'SSL_KEY' diff --git a/spec/faraday/options/options_spec.rb b/spec/faraday/options/options_spec.rb index 545e33764..81225249f 100644 --- a/spec/faraday/options/options_spec.rb +++ b/spec/faraday/options/options_spec.rb @@ -112,7 +112,6 @@ class ParentOptions < Faraday::Options.new(:a, :b, :c) end end - describe '#empty?' do it 'returns true only if all options are nil' do options = SubOptions.new diff --git a/spec/support/fake_safe_buffer.rb b/spec/support/fake_safe_buffer.rb index fc7b365a2..617c285d8 100644 --- a/spec/support/fake_safe_buffer.rb +++ b/spec/support/fake_safe_buffer.rb @@ -1,6 +1,7 @@ # emulates ActiveSupport::SafeBuffer#gsub FakeSafeBuffer = Struct.new(:string) do def to_s; self end + def gsub(regex) string.gsub(regex) { match, = $&, '' =~ /a/ diff --git a/spec/support/shared_examples/adapter.rb b/spec/support/shared_examples/adapter.rb index 16ff92bdd..e4fa76500 100644 --- a/spec/support/shared_examples/adapter.rb +++ b/spec/support/shared_examples/adapter.rb @@ -21,6 +21,7 @@ let(:adapter_options) do return [] unless options[:adapter_options] + if options[:adapter_options].is_a?(Array) options[:adapter_options] else diff --git a/spec/support/shared_examples/request_method.rb b/spec/support/shared_examples/request_method.rb index dafb23a3f..e11a83854 100644 --- a/spec/support/shared_examples/request_method.rb +++ b/spec/support/shared_examples/request_method.rb @@ -126,7 +126,6 @@ context 'when response contains big data' do before { request_stub.to_return(body: big_string) } - it 'handles streaming' do response = conn.public_send(http_method, '/') do |req| req.options.on_data = Proc.new { |*args| streamed << args } diff --git a/test/adapters/em_synchrony_test.rb b/test/adapters/em_synchrony_test.rb index 4c3830b88..3178f723d 100644 --- a/test/adapters/em_synchrony_test.rb +++ b/test/adapters/em_synchrony_test.rb @@ -13,7 +13,7 @@ def adapter() :em_synchrony end def test_binds_local_socket host = '1.2.3.4' conn = create_connection :request => { :bind => { :host => host } } - #put conn.get('/who-am-i').body + # put conn.get('/who-am-i').body assert_equal host, conn.options[:bind][:host] end end