From 41d65609d8df7a3ba61305a1bf240d25a472030e Mon Sep 17 00:00:00 2001 From: Peter Boling Date: Mon, 1 Nov 2021 17:43:37 +0700 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=94=A5=20Remove=20bad/disabled=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peter Boling --- test/units/test_action_controller_request_proxy.rb | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/test/units/test_action_controller_request_proxy.rb b/test/units/test_action_controller_request_proxy.rb index 68905aab..673eb7c7 100644 --- a/test/units/test_action_controller_request_proxy.rb +++ b/test/units/test_action_controller_request_proxy.rb @@ -142,16 +142,4 @@ def test_parameter_keys_should_preserve_brackets_from_array request_proxy(:post, { :foo => [123, 456] }).parameters_for_signature.sort ) end - - # TODO disabled; ActionController::TestRequest does not appear to parse - # QUERY_STRING - def x_test_query_string_parameter_values_should_be_cgi_unescaped - request = request_proxy do |r| - r.env["QUERY_STRING"] = "url=http%3A%2F%2Ffoo.com%2F%3Fa%3Db%26c%3Dd" - end - assert_equal( - [["url", "http://foo.com/?a=b&c=d"]], - request.parameters_for_signature.sort - ) - end end From ac5258f25357a218856e99a37c4439a41bb888bd Mon Sep 17 00:00:00 2001 From: Peter Boling Date: Mon, 1 Nov 2021 18:51:44 +0700 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=90=9B=20Fix=20request=20proxy=20Clas?= =?UTF-8?q?s=20constant=20reference=20scopes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Some classes are reproduced within this gem as nested proxies of the same name, so class lookups could get confused Signed-off-by: Peter Boling --- .../action_controller_request.rb | 101 ++++--- .../request_proxy/action_dispatch_request.rb | 10 +- lib/oauth/request_proxy/base.rb | 264 +++++++++--------- lib/oauth/request_proxy/curb_request.rb | 84 +++--- lib/oauth/request_proxy/em_http_request.rb | 108 +++---- lib/oauth/request_proxy/jabber_request.rb | 15 +- lib/oauth/request_proxy/mock_request.rb | 4 +- lib/oauth/request_proxy/net_http.rb | 109 ++++---- lib/oauth/request_proxy/rack_request.rb | 60 ++-- .../request_proxy/rest_client_request.rb | 93 +++--- lib/oauth/request_proxy/typhoeus_request.rb | 84 +++--- 11 files changed, 488 insertions(+), 444 deletions(-) diff --git a/lib/oauth/request_proxy/action_controller_request.rb b/lib/oauth/request_proxy/action_controller_request.rb index 208174ce..7266e368 100644 --- a/lib/oauth/request_proxy/action_controller_request.rb +++ b/lib/oauth/request_proxy/action_controller_request.rb @@ -1,11 +1,12 @@ +# frozen_string_literal: true + require "active_support" require "active_support/version" require "action_controller" require "uri" -if - Gem::Version.new(ActiveSupport::VERSION::STRING) < Gem::Version.new("3") -then # rails 2.x +if Gem::Version.new(ActiveSupport::VERSION::STRING) < Gem::Version.new("3") + # rails 2.x require "action_controller/request" unless ActionController::Request::HTTP_METHODS.include?("patch") ActionController::Request::HTTP_METHODS << "patch" @@ -13,9 +14,8 @@ ActionController::Request::HTTP_METHOD_LOOKUP["patch"] = :patch end -elsif - Gem::Version.new(ActiveSupport::VERSION::STRING) < Gem::Version.new("4") -then # rails 3.x +elsif Gem::Version.new(ActiveSupport::VERSION::STRING) < Gem::Version.new("4") + # rails 3.x require "action_dispatch/http/request" unless ActionDispatch::Request::HTTP_METHODS.include?("patch") ActionDispatch::Request::HTTP_METHODS << "patch" @@ -27,64 +27,63 @@ require "action_dispatch/http/request" end -module OAuth::RequestProxy - class ActionControllerRequest < OAuth::RequestProxy::Base - proxies(defined?(ActionDispatch::AbstractRequest) ? ActionDispatch::AbstractRequest : ActionDispatch::Request) +module OAuth + module RequestProxy + class ActionControllerRequest < OAuth::RequestProxy::Base + proxies(defined?(::ActionDispatch::AbstractRequest) ? ::ActionDispatch::AbstractRequest : ::ActionDispatch::Request) - def method - request.method.to_s.upcase - end + def method + request.method.to_s.upcase + end - def uri - request.url - end + def uri + request.url + end - def parameters - if options[:clobber_request] - options[:parameters] || {} - else - params = request_params.merge(query_params).merge(header_params) - params.stringify_keys! if params.respond_to?(:stringify_keys!) - params.merge(options[:parameters] || {}) + def parameters + if options[:clobber_request] + options[:parameters] || {} + else + params = request_params.merge(query_params).merge(header_params) + params.stringify_keys! if params.respond_to?(:stringify_keys!) + params.merge(options[:parameters] || {}) + end end - end - # Override from OAuth::RequestProxy::Base to avoid roundtrip - # conversion to Hash or Array and thus preserve the original - # parameter names - def parameters_for_signature - params = [] - params << options[:parameters].to_query if options[:parameters] + # Override from OAuth::RequestProxy::Base to avoid roundtrip + # conversion to Hash or Array and thus preserve the original + # parameter names + def parameters_for_signature + params = [] + params << options[:parameters].to_query if options[:parameters] - unless options[:clobber_request] - params << header_params.to_query - params << request.query_string unless query_string_blank? + unless options[:clobber_request] + params << header_params.to_query + params << request.query_string unless query_string_blank? - if raw_post_signature? - params << request.raw_post + params << request.raw_post if raw_post_signature? end - end - params. - join("&").split("&"). - reject { |s| s.match(/\A\s*\z/) }. - map { |p| p.split("=").map{|esc| CGI.unescape(esc)} }. - reject { |kv| kv[0] == "oauth_signature"} - end + params. + join("&").split("&"). + reject { |s| s.match(/\A\s*\z/) }. + map { |p| p.split("=").map { |esc| CGI.unescape(esc) } }. + reject { |kv| kv[0] == "oauth_signature" } + end - def raw_post_signature? - (request.post? || request.put?) && request.content_type.to_s.downcase.start_with?("application/x-www-form-urlencoded") - end + def raw_post_signature? + (request.post? || request.put?) && request.content_type.to_s.downcase.start_with?("application/x-www-form-urlencoded") + end - protected + protected - def query_params - request.query_parameters - end + def query_params + request.query_parameters + end - def request_params - request.request_parameters + def request_params + request.request_parameters + end end - end end diff --git a/lib/oauth/request_proxy/action_dispatch_request.rb b/lib/oauth/request_proxy/action_dispatch_request.rb index 635f5a0d..a94141eb 100644 --- a/lib/oauth/request_proxy/action_dispatch_request.rb +++ b/lib/oauth/request_proxy/action_dispatch_request.rb @@ -1,7 +1,11 @@ +# frozen_string_literal: true + require "oauth/request_proxy/rack_request" -module OAuth::RequestProxy - class ActionDispatchRequest < OAuth::RequestProxy::RackRequest - proxies ActionDispatch::Request +module OAuth + module RequestProxy + class ActionDispatchRequest < OAuth::RequestProxy::RackRequest + proxies ::ActionDispatch::Request + end end end diff --git a/lib/oauth/request_proxy/base.rb b/lib/oauth/request_proxy/base.rb index 31af01b7..65090bb8 100644 --- a/lib/oauth/request_proxy/base.rb +++ b/lib/oauth/request_proxy/base.rb @@ -1,178 +1,182 @@ +# frozen_string_literal: true + require "oauth/request_proxy" require "oauth/helper" -module OAuth::RequestProxy - class Base - include OAuth::Helper +module OAuth + module RequestProxy + class Base + include OAuth::Helper - def self.proxies(klass) - OAuth::RequestProxy.available_proxies[klass] = self - end + def self.proxies(klass) + OAuth::RequestProxy.available_proxies[klass] = self + end - attr_accessor :request, :options, :unsigned_parameters + attr_accessor :request, :options, :unsigned_parameters - def initialize(request, options = {}) - @request = request - @unsigned_parameters = (options[:unsigned_parameters] || []).map {|param| param.to_s} - @options = options - end + def initialize(request, options = {}) + @request = request + @unsigned_parameters = (options[:unsigned_parameters] || []).map(&:to_s) + @options = options + end - ## OAuth parameters + ## OAuth parameters - def oauth_callback - parameters["oauth_callback"] - end + def oauth_callback + parameters["oauth_callback"] + end - def oauth_consumer_key - parameters["oauth_consumer_key"] - end + def oauth_consumer_key + parameters["oauth_consumer_key"] + end - def oauth_nonce - parameters["oauth_nonce"] - end + def oauth_nonce + parameters["oauth_nonce"] + end - def oauth_signature - # TODO can this be nil? - [parameters["oauth_signature"]].flatten.first || "" - end + def oauth_signature + # TODO: can this be nil? + [parameters["oauth_signature"]].flatten.first || "" + end - def oauth_signature_method - case parameters["oauth_signature_method"] - when Array - parameters["oauth_signature_method"].first - else - parameters["oauth_signature_method"] + def oauth_signature_method + case parameters["oauth_signature_method"] + when Array + parameters["oauth_signature_method"].first + else + parameters["oauth_signature_method"] + end end - end - def oauth_timestamp - parameters["oauth_timestamp"] - end + def oauth_timestamp + parameters["oauth_timestamp"] + end - def oauth_token - parameters["oauth_token"] - end + def oauth_token + parameters["oauth_token"] + end - def oauth_verifier - parameters["oauth_verifier"] - end + def oauth_verifier + parameters["oauth_verifier"] + end - def oauth_version - parameters["oauth_version"] - end + def oauth_version + parameters["oauth_version"] + end - # TODO deprecate these - alias_method :consumer_key, :oauth_consumer_key - alias_method :token, :oauth_token - alias_method :nonce, :oauth_nonce - alias_method :timestamp, :oauth_timestamp - alias_method :signature, :oauth_signature - alias_method :signature_method, :oauth_signature_method + # TODO: deprecate these + alias consumer_key oauth_consumer_key + alias token oauth_token + alias nonce oauth_nonce + alias timestamp oauth_timestamp + alias signature oauth_signature + alias signature_method oauth_signature_method - ## Parameter accessors + ## Parameter accessors - def parameters - raise NotImplementedError, "Must be implemented by subclasses" - end + def parameters + raise NotImplementedError, "Must be implemented by subclasses" + end - def parameters_for_signature - parameters.select { |k,v| not signature_and_unsigned_parameters.include?(k) } - end + def parameters_for_signature + parameters.select { |k, _v| !signature_and_unsigned_parameters.include?(k) } + end - def oauth_parameters - parameters.select { |k,v| OAuth::PARAMETERS.include?(k) }.reject { |k,v| v == "" } - end + def oauth_parameters + parameters.select { |k, _v| OAuth::PARAMETERS.include?(k) }.select { |_k, v| v != "" } + end - def non_oauth_parameters - parameters.reject { |k,v| OAuth::PARAMETERS.include?(k) } - end + def non_oauth_parameters + parameters.select { |k, _v| !OAuth::PARAMETERS.include?(k) } + end - def signature_and_unsigned_parameters - unsigned_parameters+["oauth_signature"] - end + def signature_and_unsigned_parameters + unsigned_parameters + ["oauth_signature"] + end - # See 9.1.2 in specs - def normalized_uri - u = URI.parse(uri) - "#{u.scheme.downcase}://#{u.host.downcase}#{(u.scheme.downcase == 'http' && u.port != 80) || (u.scheme.downcase == 'https' && u.port != 443) ? ":#{u.port}" : ""}#{(u.path && u.path != '') ? u.path : '/'}" - end + # See 9.1.2 in specs + def normalized_uri + u = URI.parse(uri) + "#{u.scheme.downcase}://#{u.host.downcase}#{(u.scheme.casecmp("http").zero? && u.port != 80) || (u.scheme.casecmp("https").zero? && u.port != 443) ? ":#{u.port}" : ""}#{u.path && u.path != "" ? u.path : "/"}" + end - # See 9.1.1. in specs Normalize Request Parameters - def normalized_parameters - normalize(parameters_for_signature) - end + # See 9.1.1. in specs Normalize Request Parameters + def normalized_parameters + normalize(parameters_for_signature) + end - def sign(options = {}) - OAuth::Signature.sign(self, options) - end + def sign(options = {}) + OAuth::Signature.sign(self, options) + end - def sign!(options = {}) - parameters["oauth_signature"] = sign(options) - @signed = true - signature - end + def sign!(options = {}) + parameters["oauth_signature"] = sign(options) + @signed = true + signature + end - # See 9.1 in specs - def signature_base_string - base = [method, normalized_uri, normalized_parameters] - base.map { |v| escape(v) }.join("&") - end + # See 9.1 in specs + def signature_base_string + base = [method, normalized_uri, normalized_parameters] + base.map { |v| escape(v) }.join("&") + end - # Has this request been signed yet? - def signed? - @signed - end + # Has this request been signed yet? + def signed? + @signed + end + + # URI, including OAuth parameters + def signed_uri(with_oauth = true) + if signed? + params = if with_oauth + parameters + else + non_oauth_parameters + end - # URI, including OAuth parameters - def signed_uri(with_oauth = true) - if signed? - if with_oauth - params = parameters + [uri, normalize(params)].join("?") else - params = non_oauth_parameters + warn "This request has not yet been signed!" end - - [uri, normalize(params)] * "?" - else - STDERR.puts "This request has not yet been signed!" end - end - # Authorization header for OAuth - def oauth_header(options = {}) - header_params_str = oauth_parameters.map { |k,v| "#{k}=\"#{escape(v)}\"" }.join(", ") + # Authorization header for OAuth + def oauth_header(options = {}) + header_params_str = oauth_parameters.map { |k, v| "#{k}=\"#{escape(v)}\"" }.join(", ") - realm = "realm=\"#{options[:realm]}\", " if options[:realm] - "OAuth #{realm}#{header_params_str}" - end + realm = "realm=\"#{options[:realm]}\", " if options[:realm] + "OAuth #{realm}#{header_params_str}" + end - def query_string_blank? - if uri = request.env["REQUEST_URI"] - uri.split("?", 2)[1].nil? - else - request.query_string.match(/\A\s*\z/) + def query_string_blank? + if (uri = request.env["REQUEST_URI"]) + uri.split("?", 2)[1].nil? + else + request.query_string.match(/\A\s*\z/) + end end - end - protected + protected - def header_params - %w( X-HTTP_AUTHORIZATION Authorization HTTP_AUTHORIZATION ).each do |header| - next unless request.env.include?(header) + def header_params + %w[X-HTTP_AUTHORIZATION Authorization HTTP_AUTHORIZATION].each do |header| + next unless request.env.include?(header) - header = request.env[header] - next unless header[0,6] == "OAuth " + header = request.env[header] + next unless header[0, 6] == "OAuth " - # parse the header into a Hash - oauth_params = OAuth::Helper.parse_header(header) + # parse the header into a Hash + oauth_params = OAuth::Helper.parse_header(header) - # remove non-OAuth parameters - oauth_params.reject! { |k,v| k !~ /^oauth_/ } + # remove non-OAuth parameters + oauth_params.select! { |k, _v| k =~ /^oauth_/ } - return oauth_params - end + return oauth_params + end - return {} + {} + end end end end diff --git a/lib/oauth/request_proxy/curb_request.rb b/lib/oauth/request_proxy/curb_request.rb index d61cfcb2..e1999ea1 100644 --- a/lib/oauth/request_proxy/curb_request.rb +++ b/lib/oauth/request_proxy/curb_request.rb @@ -1,55 +1,61 @@ - require "oauth/request_proxy/base" +# frozen_string_literal: true + +require "oauth/request_proxy/base" require "curb" require "uri" require "cgi" -module OAuth::RequestProxy::Curl - class Easy < OAuth::RequestProxy::Base - # Proxy for signing Curl::Easy requests - # Usage example: - # oauth_params = {:consumer => oauth_consumer, :token => access_token} - # req = Curl::Easy.new(uri) - # oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri)) - # req.headers.merge!({"Authorization" => oauth_helper.header}) - # req.http_get - # response = req.body_str - proxies ::Curl::Easy - - def method - nil - end +module OAuth + module RequestProxy + module Curl + class Easy < OAuth::RequestProxy::Base + # Proxy for signing Curl::Easy requests + # Usage example: + # oauth_params = {:consumer => oauth_consumer, :token => access_token} + # req = Curl::Easy.new(uri) + # oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri)) + # req.headers.merge!({"Authorization" => oauth_helper.header}) + # req.http_get + # response = req.body_str + proxies ::Curl::Easy + + def method + nil + end - def uri - options[:uri].to_s - end + def uri + options[:uri].to_s + end - def parameters - if options[:clobber_request] - options[:parameters] - else - post_parameters.merge(query_parameters).merge(options[:parameters] || {}) - end - end + def parameters + if options[:clobber_request] + options[:parameters] + else + post_parameters.merge(query_parameters).merge(options[:parameters] || {}) + end + end - private + private - def query_parameters - query = URI.parse(request.url).query - return(query ? CGI.parse(query) : {}) - end + def query_parameters + query = URI.parse(request.url).query + (query ? CGI.parse(query) : {}) + end - def post_parameters - post_body = {} + def post_parameters + post_body = {} - # Post params are only used if posting form data - if (request.headers["Content-Type"] && request.headers["Content-Type"].to_s.downcase.start_with?("application/x-www-form-urlencoded")) + # Post params are only used if posting form data + if request.headers["Content-Type"] && request.headers["Content-Type"].to_s.downcase.start_with?("application/x-www-form-urlencoded") - request.post_body.split("&").each do |str| - param = str.split("=") - post_body[param[0]] = param[1] + request.post_body.split("&").each do |str| + param = str.split("=") + post_body[param[0]] = param[1] + end + end + post_body end end - post_body end end end diff --git a/lib/oauth/request_proxy/em_http_request.rb b/lib/oauth/request_proxy/em_http_request.rb index 741560bc..4ed830d9 100644 --- a/lib/oauth/request_proxy/em_http_request.rb +++ b/lib/oauth/request_proxy/em_http_request.rb @@ -1,72 +1,76 @@ +# frozen_string_literal: true + require "oauth/request_proxy/base" # em-http also uses adddressable so there is no need to require uri. require "em-http" require "cgi" -module OAuth::RequestProxy::EventMachine - class HttpRequest < OAuth::RequestProxy::Base - - # A Proxy for use when you need to sign EventMachine::HttpClient instances. - # It needs to be called once the client is construct but before data is sent. - # Also see oauth/client/em-http - proxies ::EventMachine::HttpClient - - # Request in this con +module OAuth + module RequestProxy + module EventMachine + class HttpRequest < OAuth::RequestProxy::Base + # A Proxy for use when you need to sign EventMachine::HttpClient instances. + # It needs to be called once the client is construct but before data is sent. + # Also see oauth/client/em-http + proxies ::EventMachine::HttpClient - def method - request.req[:method] - end + # Request in this con - def uri - request.conn.normalize.to_s - end + def method + request.req[:method] + end - def parameters - if options[:clobber_request] - options[:parameters] - else - all_parameters - end - end + def uri + request.conn.normalize.to_s + end - protected + def parameters + if options[:clobber_request] + options[:parameters] + else + all_parameters + end + end - def all_parameters - merged_parameters({}, post_parameters, query_parameters, options[:parameters]) - end + protected - def query_parameters - quer = request.req[:query] - hash_quer = if quer.respond_to?(:merge) - quer - else - CGI.parse(quer.to_s) - end - CGI.parse(request.conn.query.to_s).merge(hash_quer) - end + def all_parameters + merged_parameters({}, post_parameters, query_parameters, options[:parameters]) + end - def post_parameters - headers = request.req[:head] || {} - form_encoded = headers["Content-Type"].to_s.downcase.start_with?("application/x-www-form-urlencoded") - if ["POST", "PUT"].include?(method) && form_encoded - CGI.parse(request.normalize_body(request.req[:body]).to_s) - else - {} - end - end + def query_parameters + quer = request.req[:query] + hash_quer = if quer.respond_to?(:merge) + quer + else + CGI.parse(quer.to_s) + end + CGI.parse(request.conn.query.to_s).merge(hash_quer) + end - def merged_parameters(params, *extra_params) - extra_params.compact.each do |params_pairs| - params_pairs.each_pair do |key, value| - if params.has_key?(key) - params[key.to_s] += value + def post_parameters + headers = request.req[:head] || {} + form_encoded = headers["Content-Type"].to_s.downcase.start_with?("application/x-www-form-urlencoded") + if %w[POST PUT].include?(method) && form_encoded + CGI.parse(request.normalize_body(request.req[:body]).to_s) else - params[key.to_s] = [value].flatten + {} end end + + def merged_parameters(params, *extra_params) + extra_params.compact.each do |params_pairs| + params_pairs.each_pair do |key, value| + if params.key?(key) + params[key.to_s] += value + else + params[key.to_s] = [value].flatten + end + end + end + params + end end - params end - end end diff --git a/lib/oauth/request_proxy/jabber_request.rb b/lib/oauth/request_proxy/jabber_request.rb index 2ff1bb4a..7f875b9b 100644 --- a/lib/oauth/request_proxy/jabber_request.rb +++ b/lib/oauth/request_proxy/jabber_request.rb @@ -1,12 +1,14 @@ +# frozen_string_literal: true + require "xmpp4r" require "oauth/request_proxy/base" module OAuth module RequestProxy class JabberRequest < OAuth::RequestProxy::Base - proxies Jabber::Iq - proxies Jabber::Presence - proxies Jabber::Message + proxies ::Jabber::Iq + proxies ::Jabber::Presence + proxies ::Jabber::Message def parameters return @params if @params @@ -16,9 +18,10 @@ def parameters oauth = @request.get_elements("//oauth").first return @params unless oauth - %w( oauth_token oauth_consumer_key oauth_signature_method oauth_signature - oauth_timestamp oauth_nonce oauth_version ).each do |param| - next unless element = oauth.first_element(param) + %w[ oauth_token oauth_consumer_key oauth_signature_method oauth_signature + oauth_timestamp oauth_nonce oauth_version ].each do |param| + next unless (element = oauth.first_element(param)) + @params[param] = element.text end diff --git a/lib/oauth/request_proxy/mock_request.rb b/lib/oauth/request_proxy/mock_request.rb index db0ba83d..9b326409 100644 --- a/lib/oauth/request_proxy/mock_request.rb +++ b/lib/oauth/request_proxy/mock_request.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "oauth/request_proxy/base" module OAuth @@ -18,7 +20,7 @@ module RequestProxy # :consumer_secret => oauth_consumer_secret, # :token_secret => oauth_token_secret, class MockRequest < OAuth::RequestProxy::Base - proxies Hash + proxies ::Hash def parameters @request["parameters"] diff --git a/lib/oauth/request_proxy/net_http.rb b/lib/oauth/request_proxy/net_http.rb index 0d0d6fb2..62e1619d 100644 --- a/lib/oauth/request_proxy/net_http.rb +++ b/lib/oauth/request_proxy/net_http.rb @@ -1,72 +1,81 @@ +# frozen_string_literal: true + require "oauth/request_proxy/base" require "net/http" require "uri" require "cgi" -module OAuth::RequestProxy::Net - module HTTP - class HTTPRequest < OAuth::RequestProxy::Base - proxies ::Net::HTTPGenericRequest +module OAuth + module RequestProxy + module Net + module HTTP + class HTTPRequest < OAuth::RequestProxy::Base + proxies ::Net::HTTPGenericRequest - def method - request.method - end + def method + request.method + end - def uri - options[:uri].to_s - end + def uri + options[:uri].to_s + end - def parameters - if options[:clobber_request] - options[:parameters] - else - all_parameters - end - end + def parameters + if options[:clobber_request] + options[:parameters] + else + all_parameters + end + end - def body - request.body - end + def body + request.body + end - private + private - def all_parameters - request_params = CGI.parse(query_string) - # request_params.each{|k,v| request_params[k] = [nil] if v == []} + def all_parameters + request_params = CGI.parse(query_string) + # request_params.each{|k,v| request_params[k] = [nil] if v == []} - if options[:parameters] - options[:parameters].each do |k,v| - if request_params.has_key?(k) && v - request_params[k] << v - else - request_params[k] = [v] + if options[:parameters] + options[:parameters].each do |k,v| + if request_params.has_key?(k) && v + request_params[k] << v + else + request_params[k] = [v] + end + end end + request_params end - end - request_params - end - def query_string - params = [ query_params, auth_header_params ] - params << post_params if (method.to_s.upcase == "POST" || method.to_s.upcase == "PUT") && form_url_encoded? - params.compact.join("&") - end + def query_string + params = [query_params, auth_header_params] + if (method.to_s.casecmp("POST").zero? || method.to_s.casecmp("PUT").zero?) && form_url_encoded? + params << post_params + end + params.compact.join("&") + end - def form_url_encoded? - request["Content-Type"] != nil && request["Content-Type"].to_s.downcase.start_with?("application/x-www-form-urlencoded") - end + def form_url_encoded? + !request["Content-Type"].nil? && request["Content-Type"].to_s.downcase.start_with?("application/x-www-form-urlencoded") + end - def query_params - URI.parse(request.path).query - end + def query_params + URI.parse(request.path).query + end - def post_params - request.body - end + def post_params + request.body + end - def auth_header_params - return nil unless request["Authorization"] && request["Authorization"][0,5] == "OAuth" - request["Authorization"] + def auth_header_params + return nil unless request["Authorization"] && request["Authorization"][0, 5] == "OAuth" + + request["Authorization"] + end + end end end end diff --git a/lib/oauth/request_proxy/rack_request.rb b/lib/oauth/request_proxy/rack_request.rb index 5039ab48..f006fc4a 100644 --- a/lib/oauth/request_proxy/rack_request.rb +++ b/lib/oauth/request_proxy/rack_request.rb @@ -1,43 +1,47 @@ +# frozen_string_literal: true + require "oauth/request_proxy/base" require "uri" require "rack" -module OAuth::RequestProxy - class RackRequest < OAuth::RequestProxy::Base - proxies Rack::Request +module OAuth + module RequestProxy + class RackRequest < OAuth::RequestProxy::Base + proxies ::Rack::Request - def method - request.env["rack.methodoverride.original_method"] || request.request_method - end + def method + request.env["rack.methodoverride.original_method"] || request.request_method + end - def uri - request.url - end + def uri + request.url + end - def parameters - if options[:clobber_request] - options[:parameters] || {} - else - params = request_params.merge(query_params).merge(header_params) - params.merge(options[:parameters] || {}) + def parameters + if options[:clobber_request] + options[:parameters] || {} + else + params = request_params.merge(query_params).merge(header_params) + params.merge(options[:parameters] || {}) + end end - end - def signature - parameters["oauth_signature"] - end + def signature + parameters["oauth_signature"] + end - protected + protected - def query_params - request.GET - end + def query_params + request.GET + end - def request_params - if request.content_type and request.content_type.to_s.downcase.start_with?("application/x-www-form-urlencoded") - request.POST - else - {} + def request_params + if request.content_type && request.content_type.to_s.downcase.start_with?("application/x-www-form-urlencoded") + request.POST + else + {} + end end end end diff --git a/lib/oauth/request_proxy/rest_client_request.rb b/lib/oauth/request_proxy/rest_client_request.rb index e7175b32..8fbb67be 100644 --- a/lib/oauth/request_proxy/rest_client_request.rb +++ b/lib/oauth/request_proxy/rest_client_request.rb @@ -1,62 +1,65 @@ +# frozen_string_literal: true + require "oauth/request_proxy/base" require "rest-client" require "uri" require "cgi" -module OAuth::RequestProxy::RestClient - class Request < OAuth::RequestProxy::Base - proxies RestClient::Request - - def method - request.method.to_s.upcase - end +module OAuth + module RequestProxy + module RestClient + class Request < OAuth::RequestProxy::Base + proxies ::RestClient::Request - def uri - request.url - end + def method + request.method.to_s.upcase + end - def parameters - if options[:clobber_request] - options[:parameters] || {} - else - post_parameters.merge(query_params).merge(options[:parameters] || {}) + def uri + request.url end - end - protected + def parameters + if options[:clobber_request] + options[:parameters] || {} + else + post_parameters.merge(query_params).merge(options[:parameters] || {}) + end + end - def query_params - query = URI.parse(request.url).query - query ? CGI.parse(query) : {} - end + protected - def request_params - end - - def post_parameters - # Post params are only used if posting form data - if method == "POST" || method == "PUT" - OAuth::Helper.stringify_keys(query_string_to_hash(request.payload.to_s) || {}) - else - {} + def query_params + query = URI.parse(request.url).query + query ? CGI.parse(query) : {} end - end - - private - - def query_string_to_hash(query) - keyvals = query.split("&").inject({}) do |result, q| - k,v = q.split("=") - if !v.nil? - result.merge({k => v}) - elsif !result.key?(k) - result.merge({k => true}) + + def request_params; end + + def post_parameters + # Post params are only used if posting form data + if method == "POST" || method == "PUT" + OAuth::Helper.stringify_keys(query_string_to_hash(request.payload.to_s) || {}) else - result + {} + end + end + + private + + def query_string_to_hash(query) + query.split("&").inject({}) do |result, q| + k, v = q.split("=") + if !v.nil? + result.merge({ k => v }) + elsif !result.key?(k) + result.merge({ k => true }) + else + result + end end end - keyvals end - + end end -end \ No newline at end of file +end diff --git a/lib/oauth/request_proxy/typhoeus_request.rb b/lib/oauth/request_proxy/typhoeus_request.rb index 8ba17aaa..10add744 100644 --- a/lib/oauth/request_proxy/typhoeus_request.rb +++ b/lib/oauth/request_proxy/typhoeus_request.rb @@ -1,53 +1,59 @@ +# frozen_string_literal: true + require "oauth/request_proxy/base" require "typhoeus" require "typhoeus/request" require "uri" require "cgi" -module OAuth::RequestProxy::Typhoeus - class Request < OAuth::RequestProxy::Base - # Proxy for signing Typhoeus::Request requests - # Usage example: - # oauth_params = {:consumer => oauth_consumer, :token => access_token} - # req = Typhoeus::Request.new(uri, options) - # oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri)) - # req.options[:headers].merge!({"Authorization" => oauth_helper.header}) - # hydra = Typhoeus::Hydra.new() - # hydra.queue(req) - # hydra.run - # response = req.response - proxies Typhoeus::Request - - def method - request_method = request.options[:method].to_s.upcase - request_method.empty? ? "GET" : request_method - end +module OAuth + module RequestProxy + module Typhoeus + class Request < OAuth::RequestProxy::Base + # Proxy for signing Typhoeus::Request requests + # Usage example: + # oauth_params = {:consumer => oauth_consumer, :token => access_token} + # req = Typhoeus::Request.new(uri, options) + # oauth_helper = OAuth::Client::Helper.new(req, oauth_params.merge(:request_uri => uri)) + # req.options[:headers].merge!({"Authorization" => oauth_helper.header}) + # hydra = Typhoeus::Hydra.new() + # hydra.queue(req) + # hydra.run + # response = req.response + proxies ::Typhoeus::Request - def uri - options[:uri].to_s - end + def method + request_method = request.options[:method].to_s.upcase + request_method.empty? ? "GET" : request_method + end - def parameters - if options[:clobber_request] - options[:parameters] - else - post_parameters.merge(query_parameters).merge(options[:parameters] || {}) - end - end + def uri + options[:uri].to_s + end - private + def parameters + if options[:clobber_request] + options[:parameters] + else + post_parameters.merge(query_parameters).merge(options[:parameters] || {}) + end + end - def query_parameters - query = URI.parse(request.url).query - query ? CGI.parse(query) : {} - end + private + + def query_parameters + query = URI.parse(request.url).query + query ? CGI.parse(query) : {} + end - def post_parameters - # Post params are only used if posting form data - if method == "POST" - OAuth::Helper.stringify_keys(request.options[:params] || {}) - else - {} + def post_parameters + # Post params are only used if posting form data + if method == "POST" + OAuth::Helper.stringify_keys(request.options[:params] || {}) + else + {} + end + end end end end From ee9345bad21e2ba7b8d088aa367c42fe6e916343 Mon Sep 17 00:00:00 2001 From: Peter Boling Date: Mon, 1 Nov 2021 19:21:00 +0700 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=93=9D=20Document=20Ruby=20compatibil?= =?UTF-8?q?ity=20matrix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peter Boling --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 20f43a10..0b85a5b9 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,15 @@ Or install it yourself as: Targeted ruby compatibility is non-EOL versions of Ruby, currently 2.6, 2.7, and 3.0. Ruby is limited to 2.0+ in the gemspec, and this may change while the gem is -still at version 0.x. +still at version 0.x. The `master` branch currently targets 0.6.x releases. + +| Ruby OAuth Version | Officially Supported Rubies | Unofficially Supported Rubies | +|--------------------- | ------------------------------------------- | ----------------------------- | +| 0.7.x (hypothetical) | 2.7, 3.0, 3.1 | 2.6 | +| 0.6.x | 2.6, 2.7, 3.0 | 2.3, 2.4, 2.5 | +| 0.5.x | 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0 | | + +NOTE: 0.5.7 is anticipated as last release of the 0.5.x series. ## Basics From 82705955b0a520c647d3b033945845487409205d Mon Sep 17 00:00:00 2001 From: Peter Boling Date: Tue, 2 Nov 2021 13:27:03 +0700 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=94=A7=20Ignore=20style=20issues=20ra?= =?UTF-8?q?ised=20by=20tweaking=20backports=20for=20older=20Rubies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peter Boling --- .rubocop_todo.yml | 230 +++++++++------------------------------------- 1 file changed, 44 insertions(+), 186 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 0d892037..01b8ca3c 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2021-11-01 06:50:04 UTC using RuboCop version 1.22.3. +# on 2021-11-02 06:24:42 UTC using RuboCop version 1.22.3. # 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 @@ -20,18 +20,13 @@ Gemspec/RubyVersionGlobalsUsage: Exclude: - 'oauth.gemspec' -# Offense count: 8 +# Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: outdent, indent Layout/AccessModifierIndentation: Exclude: - 'lib/oauth/client/net_http.rb' - - 'lib/oauth/request_proxy/action_controller_request.rb' - - 'lib/oauth/request_proxy/base.rb' - - 'lib/oauth/request_proxy/net_http.rb' - - 'lib/oauth/request_proxy/rack_request.rb' - - 'lib/oauth/request_proxy/rest_client_request.rb' - 'lib/oauth/tokens/request_token.rb' - 'test/cases/spec/1_0-final/test_parameter_encodings.rb' @@ -72,26 +67,18 @@ Layout/CommentIndentation: - 'test/integration/consumer_test.rb' - 'test/units/test_net_http_client.rb' -# Offense count: 2 -# Cop supports --auto-correct. -Layout/ConditionPosition: - Exclude: - - 'lib/oauth/request_proxy/action_controller_request.rb' - # Offense count: 1 # Cop supports --auto-correct. Layout/ElseAlignment: Exclude: - 'lib/oauth/client/em_http.rb' -# Offense count: 9 +# Offense count: 7 # Cop supports --auto-correct. Layout/EmptyLineAfterGuardClause: Exclude: - 'lib/oauth/consumer.rb' - 'lib/oauth/request_proxy.rb' - - 'lib/oauth/request_proxy/jabber_request.rb' - - 'lib/oauth/request_proxy/net_http.rb' - 'lib/oauth/signature.rb' - 'lib/oauth/signature/base.rb' - 'test/cases/oauth_case.rb' @@ -149,7 +136,7 @@ Layout/EmptyLinesAroundBlockBody: Exclude: - 'test/units/test_cli.rb' -# Offense count: 42 +# Offense count: 39 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines, beginning_only, ending_only @@ -232,25 +219,22 @@ Layout/HeredocIndentation: Exclude: - 'test/units/test_cli.rb' -# Offense count: 16 +# Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: normal, indented_internal_methods Layout/IndentationConsistency: Exclude: - - 'lib/oauth/request_proxy/curb_request.rb' - - 'lib/oauth/request_proxy/rest_client_request.rb' - 'test/units/test_net_http_client.rb' - 'test/units/test_request_token.rb' -# Offense count: 19 +# Offense count: 11 # Cop supports --auto-correct. # Configuration parameters: Width, IgnoredPatterns. Layout/IndentationWidth: Exclude: - 'lib/oauth/client/em_http.rb' - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/rest_client_request.rb' - 'test/units/test_consumer.rb' - 'test/units/test_curb_request_proxy.rb' - 'test/units/test_em_http_client.rb' @@ -260,13 +244,7 @@ Layout/IndentationWidth: - 'test/units/test_rest_client_request_proxy.rb' - 'test/units/test_typhoeus_request_proxy.rb' -# Offense count: 1 -# Cop supports --auto-correct. -Layout/InitialIndentation: - Exclude: - - 'lib/oauth/request_proxy/curb_request.rb' - -# Offense count: 10 +# Offense count: 9 # Cop supports --auto-correct. # Configuration parameters: AllowDoxygenCommentStyle, AllowGemfileRubyComment. Layout/LeadingCommentSpace: @@ -314,7 +292,7 @@ Layout/MultilineOperationIndentation: Exclude: - 'lib/oauth/consumer.rb' -# Offense count: 183 +# Offense count: 174 # Cop supports --auto-correct. Layout/SpaceAfterComma: Enabled: false @@ -336,14 +314,13 @@ Layout/SpaceAroundEqualsInParameterDefault: - 'test/units/test_cli.rb' - 'test/units/test_consumer.rb' -# Offense count: 229 +# Offense count: 228 # Cop supports --auto-correct. # Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator. # SupportedStylesForExponentOperator: space, no_space Layout/SpaceAroundOperators: Exclude: - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/base.rb' - 'oauth.gemspec' - 'test/cases/oauth_case.rb' - 'test/cases/spec/1_0-final/test_normalize_request_parameters.rb' @@ -357,15 +334,6 @@ Layout/SpaceAroundOperators: - 'test/units/test_rsa_sha1.rb' - 'test/units/test_server.rb' -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. -# SupportedStyles: space, no_space -# SupportedStylesForEmptyBraces: space, no_space -Layout/SpaceBeforeBlockBraces: - Exclude: - - 'lib/oauth/request_proxy/action_controller_request.rb' - # Offense count: 39 # Cop supports --auto-correct. Layout/SpaceBeforeComma: @@ -379,17 +347,16 @@ Layout/SpaceBeforeFirstArg: Exclude: - 'test/units/test_consumer.rb' -# Offense count: 4 +# Offense count: 2 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBrackets. # SupportedStyles: space, no_space, compact # SupportedStylesForEmptyBrackets: space, no_space Layout/SpaceInsideArrayLiteralBrackets: Exclude: - - 'lib/oauth/request_proxy/net_http.rb' - 'oauth.gemspec' -# Offense count: 30 +# Offense count: 25 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters. # SupportedStyles: space, no_space @@ -397,8 +364,6 @@ Layout/SpaceInsideArrayLiteralBrackets: Layout/SpaceInsideBlockBraces: Exclude: - 'lib/oauth/client/em_http.rb' - - 'lib/oauth/request_proxy/action_controller_request.rb' - - 'lib/oauth/request_proxy/base.rb' - 'test/support/minitest_helpers.rb' - 'test/units/test_consumer.rb' @@ -426,29 +391,6 @@ Layout/SpaceInsideParens: - 'test/units/test_rsa_sha1.rb' - 'test/units/test_signature_plain_text.rb' -# Offense count: 2 -# Cop supports --auto-correct. -Layout/SpaceInsidePercentLiteralDelimiters: - Exclude: - - 'lib/oauth/request_proxy/base.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle. -# SupportedStyles: final_newline, final_blank_line -Layout/TrailingEmptyLines: - Exclude: - - '**/*.md' - - '**/*.markdown' - - 'lib/oauth/request_proxy/rest_client_request.rb' - -# Offense count: 6 -# Cop supports --auto-correct. -# Configuration parameters: AllowInHeredoc. -Layout/TrailingWhitespace: - Exclude: - - 'lib/oauth/request_proxy/rest_client_request.rb' - # Offense count: 6 # Cop supports --auto-correct. Lint/AmbiguousOperatorPrecedence: @@ -456,13 +398,6 @@ Lint/AmbiguousOperatorPrecedence: - 'lib/oauth/cli/sign_command.rb' - 'lib/oauth/consumer.rb' -# Offense count: 2 -# Configuration parameters: AllowSafeAssignment. -Lint/AssignmentInCondition: - Exclude: - - 'lib/oauth/request_proxy/base.rb' - - 'lib/oauth/request_proxy/jabber_request.rb' - # Offense count: 5 # Cop supports --auto-correct. Lint/DeprecatedOpenSSLConstant: @@ -520,15 +455,6 @@ Lint/UnderscorePrefixedVariableName: Exclude: - 'lib/oauth/consumer.rb' -# Offense count: 5 -# Cop supports --auto-correct. -# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments. -Lint/UnusedBlockArgument: - Exclude: - - '**/*.md' - - '**/*.markdown' - - 'lib/oauth/request_proxy/base.rb' - # Offense count: 2 # Cop supports --auto-correct. # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods. @@ -580,7 +506,7 @@ Metrics/MethodLength: Metrics/ParameterLists: MaxOptionalParameters: 4 -# Offense count: 7 +# Offense count: 8 # Configuration parameters: IgnoredMethods. Metrics/PerceivedComplexity: Max: 20 @@ -634,12 +560,6 @@ Minitest/RefuteFalse: - 'test/units/test_signature_hmac_sha1.rb' - 'test/units/test_signature_hmac_sha256.rb' -# Offense count: 1 -# Cop supports --auto-correct. -Minitest/TestMethodName: - Exclude: - - 'test/units/test_action_controller_request_proxy.rb' - # Offense count: 2 Naming/AccessorMethodName: Exclude: @@ -691,13 +611,6 @@ Performance/BlockGivenWithExplicitBlock: - 'lib/oauth/consumer.rb' - 'lib/oauth/signature/base.rb' -# Offense count: 4 -# Cop supports --auto-correct. -Performance/Casecmp: - Exclude: - - 'lib/oauth/request_proxy/base.rb' - - 'lib/oauth/request_proxy/net_http.rb' - # Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: MaxKeyValuePairs. @@ -741,25 +654,23 @@ Security/Open: Exclude: - 'lib/oauth/cli/base_command.rb' -# Offense count: 7 +# Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: prefer_alias, prefer_alias_method Style/Alias: Exclude: - 'lib/oauth/helper.rb' - - 'lib/oauth/request_proxy/base.rb' -# Offense count: 2 +# Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: always, conditionals Style/AndOr: Exclude: - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/rack_request.rb' -# Offense count: 8 +# Offense count: 7 # Cop supports --auto-correct. Style/ArrayJoin: Exclude: @@ -767,7 +678,6 @@ Style/ArrayJoin: - 'lib/oauth/cli/sign_command.rb' - 'lib/oauth/client/net_http.rb' - 'lib/oauth/helper.rb' - - 'lib/oauth/request_proxy/base.rb' # Offense count: 2 # Cop supports --auto-correct. @@ -787,12 +697,25 @@ Style/CaseLikeIf: - 'lib/oauth/helper.rb' - 'lib/oauth/signature/rsa/sha1.rb' -# Offense count: 22 +# Offense count: 13 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: nested, compact Style/ClassAndModuleChildren: - Enabled: false + Exclude: + - 'lib/oauth/cli/authorize_command.rb' + - 'lib/oauth/cli/base_command.rb' + - 'lib/oauth/cli/help_command.rb' + - 'lib/oauth/cli/query_command.rb' + - 'lib/oauth/cli/sign_command.rb' + - 'lib/oauth/cli/version_command.rb' + - 'lib/oauth/client/helper.rb' + - 'lib/oauth/client/net_http.rb' + - 'lib/oauth/signature/base.rb' + - 'lib/oauth/signature/hmac/sha1.rb' + - 'lib/oauth/signature/hmac/sha256.rb' + - 'lib/oauth/signature/plaintext.rb' + - 'lib/oauth/signature/rsa/sha1.rb' # Offense count: 5 # Cop supports --auto-correct. @@ -817,7 +740,7 @@ Style/CollectionCompact: Exclude: - 'lib/oauth/cli/query_command.rb' -# Offense count: 6 +# Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: Keywords, RequireColon. # Keywords: TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE @@ -826,11 +749,9 @@ Style/CommentAnnotation: - '**/*.md' - '**/*.markdown' - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/base.rb' - 'lib/oauth/tokens/request_token.rb' - - 'test/units/test_action_controller_request_proxy.rb' -# Offense count: 6 +# Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions. # SupportedStyles: assign_to_condition, assign_inside_condition @@ -839,7 +760,6 @@ Style/ConditionalAssignment: - 'lib/oauth/client/em_http.rb' - 'lib/oauth/client/net_http.rb' - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/base.rb' - 'test/cases/spec/1_0-final/test_parameter_encodings.rb' # Offense count: 67 @@ -853,14 +773,13 @@ Style/EachWithObject: Exclude: - 'lib/oauth/consumer.rb' -# Offense count: 4 +# Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: compact, expanded Style/EmptyMethod: Exclude: - 'lib/oauth/client/action_controller_request.rb' - - 'lib/oauth/request_proxy/rest_client_request.rb' - 'test/units/test_request_token.rb' - 'test/units/test_token.rb' @@ -882,21 +801,20 @@ Style/EvenOdd: Style/ExpandPathArguments: Enabled: false -# Offense count: 86 +# Offense count: 75 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: always, always_true, never Style/FrozenStringLiteralComment: Enabled: false -# Offense count: 6 +# Offense count: 5 # Cop supports --auto-correct. Style/GlobalStdStream: Exclude: - 'bin/oauth' - 'examples/twitter.rb' - 'examples/yql.rb' - - 'lib/oauth/request_proxy/base.rb' # Offense count: 3 # Configuration parameters: MinBodyLength. @@ -913,7 +831,7 @@ Style/HashConversion: Exclude: - 'lib/oauth/tokens/request_token.rb' -# Offense count: 495 +# Offense count: 496 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols. # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys @@ -927,9 +845,9 @@ Style/IfUnlessModifier: - 'lib/oauth/cli/sign_command.rb' - 'lib/oauth/client/em_http.rb' - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/action_controller_request.rb' + - 'lib/oauth/request_proxy/net_http.rb' -# Offense count: 2 +# Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: InverseMethods, InverseBlocks. Style/InverseMethods: @@ -968,12 +886,6 @@ Style/ModuleFunction: Exclude: - 'lib/oauth/helper.rb' -# Offense count: 2 -# Cop supports --auto-correct. -Style/MultilineIfThen: - Exclude: - - 'lib/oauth/request_proxy/action_controller_request.rb' - # Offense count: 6 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -995,19 +907,6 @@ Style/NegatedIf: - 'lib/oauth/consumer.rb' - 'lib/oauth/tokens/request_token.rb' -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: IncludeSemanticChanges. -Style/NonNilCheck: - Exclude: - - 'lib/oauth/request_proxy/net_http.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -Style/Not: - Exclude: - - 'lib/oauth/request_proxy/base.rb' - # Offense count: 6 # Cop supports --auto-correct. # Configuration parameters: Strict. @@ -1027,14 +926,7 @@ Style/ParallelAssignment: Exclude: - 'lib/oauth/cli/base_command.rb' -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: AllowSafeAssignment, AllowInMultilineConditions. -Style/ParenthesesAroundCondition: - Exclude: - - 'lib/oauth/request_proxy/curb_request.rb' - -# Offense count: 7 +# Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: PreferredDelimiters. Style/PercentLiteralDelimiters: @@ -1042,8 +934,6 @@ Style/PercentLiteralDelimiters: - 'lib/oauth/client/net_http.rb' - 'lib/oauth/consumer.rb' - 'lib/oauth/oauth.rb' - - 'lib/oauth/request_proxy/base.rb' - - 'lib/oauth/request_proxy/jabber_request.rb' - 'test/units/test_signature.rb' # Offense count: 1 @@ -1052,14 +942,13 @@ Style/PerlBackrefs: Exclude: - 'test/cases/spec/1_0-final/test_parameter_encodings.rb' -# Offense count: 6 +# Offense count: 5 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: short, verbose Style/PreferredHashMethods: Exclude: - 'lib/oauth/consumer.rb' - - 'lib/oauth/request_proxy/em_http_request.rb' - 'lib/oauth/request_proxy/net_http.rb' # Offense count: 3 @@ -1084,12 +973,6 @@ Style/RedundantArgument: Exclude: - 'lib/oauth/cli/base_command.rb' -# Offense count: 1 -# Cop supports --auto-correct. -Style/RedundantAssignment: - Exclude: - - 'lib/oauth/request_proxy/rest_client_request.rb' - # Offense count: 1 # Cop supports --auto-correct. Style/RedundantBegin: @@ -1110,13 +993,11 @@ Style/RedundantRegexpEscape: - 'lib/oauth/oauth.rb' - 'test/support/minitest_helpers.rb' -# Offense count: 3 +# Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: AllowMultipleReturnValues. Style/RedundantReturn: Exclude: - - 'lib/oauth/request_proxy/base.rb' - - 'lib/oauth/request_proxy/curb_request.rb' - 'test/units/test_consumer.rb' # Offense count: 19 @@ -1185,12 +1066,6 @@ Style/SpecialGlobalVars: - 'examples/yql.rb' - 'oauth.gemspec' -# Offense count: 1 -# Cop supports --auto-correct. -Style/StderrPuts: - Exclude: - - 'lib/oauth/request_proxy/base.rb' - # Offense count: 16 # Cop supports --auto-correct. # Configuration parameters: Mode. @@ -1202,14 +1077,6 @@ Style/StringConcatenation: - 'test/units/test_net_http_client.rb' - 'test/units/test_rsa_sha1.rb' -# Offense count: 4 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle. -# SupportedStyles: single_quotes, double_quotes -Style/StringLiteralsInInterpolation: - Exclude: - - 'lib/oauth/request_proxy/base.rb' - # Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: . @@ -1218,7 +1085,7 @@ Style/SymbolArray: EnforcedStyle: percent MinSize: 5 -# Offense count: 3 +# Offense count: 2 # Cop supports --auto-correct. # Configuration parameters: AllowMethodsWithArguments, IgnoredMethods. # IgnoredMethods: respond_to, define_method @@ -1226,15 +1093,6 @@ Style/SymbolProc: Exclude: - 'lib/oauth/cli/query_command.rb' - 'lib/oauth/client/em_http.rb' - - 'lib/oauth/request_proxy/base.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, AllowSafeAssignment. -# SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex -Style/TernaryParentheses: - Exclude: - - 'lib/oauth/request_proxy/base.rb' # Offense count: 3 # Cop supports --auto-correct. @@ -1254,7 +1112,7 @@ Style/TrivialAccessors: - 'lib/oauth/client/action_controller_request.rb' - 'lib/oauth/client/helper.rb' -# Offense count: 18 +# Offense count: 17 # Cop supports --auto-correct. # Configuration parameters: WordRegex. # SupportedStyles: percent, brackets @@ -1262,7 +1120,7 @@ Style/WordArray: EnforcedStyle: percent MinSize: 4 -# Offense count: 119 +# Offense count: 121 # Cop supports --auto-correct. # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # URISchemes: http, https