Sha256: a3a48a3cf84e750f5e810fe8b605e6e3e9d383def2b05e2fa6515046fb5dd95d

Contents?: true

Size: 1.41 KB

Versions: 6

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require "oauth/request_proxy/base"
require "rest-client"
require "uri"
require "cgi"

module OAuth
  module RequestProxy
    module RestClient
      class Request < OAuth::RequestProxy::Base
        proxies ::RestClient::Request

        def method
          request.method.to_s.upcase
        end

        def uri
          request.url
        end

        def parameters
          if options[:clobber_request]
            options[:parameters] || {}
          else
            post_parameters.merge(query_params).merge(options[:parameters] || {})
          end
        end

        protected

        def query_params
          query = URI.parse(request.url).query
          query ? CGI.parse(query) : {}
        end

        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
            {}
          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
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
oauth-0.5.14 lib/oauth/request_proxy/rest_client_request.rb
oauth-0.5.13 lib/oauth/request_proxy/rest_client_request.rb
oauth-0.5.12 lib/oauth/request_proxy/rest_client_request.rb
oauth-0.5.11 lib/oauth/request_proxy/rest_client_request.rb
oauth-0.5.10 lib/oauth/request_proxy/rest_client_request.rb
oauth-0.5.9 lib/oauth/request_proxy/rest_client_request.rb