1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
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
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)
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})
else
result
end
end
keyvals
end
end
end
|