class OAuth::RequestProxy::Base
Attributes
options[RW]
request[RW]
unsigned_parameters[RW]
Public Class Methods
new(request, options = {})
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 17 def initialize(request, options = {}) @request = request @unsigned_parameters = (options[:unsigned_parameters] || []).map(&:to_s) @options = options end
proxies(klass)
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 11 def self.proxies(klass) OAuth::RequestProxy.available_proxies[klass] = self end
Public Instance Methods
non_oauth_parameters()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 89 def non_oauth_parameters parameters.reject { |k, _v| OAuth::PARAMETERS.include?(k) } end
normalized_parameters()
click to toggle source
See 9.1.1. in specs Normalize Request Parameters
# File lib/oauth/request_proxy/base.rb, line 104 def normalized_parameters normalize(parameters_for_signature) end
normalized_uri()
click to toggle source
See 9.1.2 in specs
# File lib/oauth/request_proxy/base.rb, line 98 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
oauth_callback()
click to toggle source
OAuth
parameters
# File lib/oauth/request_proxy/base.rb, line 25 def oauth_callback parameters["oauth_callback"] end
oauth_consumer_key()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 29 def oauth_consumer_key parameters["oauth_consumer_key"] end
Also aliased as: consumer_key
oauth_header(options = {})
click to toggle source
Authorization header for OAuth
# File lib/oauth/request_proxy/base.rb, line 145 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
oauth_nonce()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 33 def oauth_nonce parameters["oauth_nonce"] end
Also aliased as: nonce
oauth_parameters()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 85 def oauth_parameters parameters.select { |k, _v| OAuth::PARAMETERS.include?(k) }.reject { |_k, v| v == "" } end
oauth_signature()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 37 def oauth_signature # TODO: can this be nil? [parameters["oauth_signature"]].flatten.first || "" end
Also aliased as: signature
oauth_signature_method()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 42 def oauth_signature_method case parameters["oauth_signature_method"] when Array parameters["oauth_signature_method"].first else parameters["oauth_signature_method"] end end
Also aliased as: signature_method
oauth_timestamp()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 51 def oauth_timestamp parameters["oauth_timestamp"] end
Also aliased as: timestamp
oauth_token()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 55 def oauth_token parameters["oauth_token"] end
Also aliased as: token
oauth_verifier()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 59 def oauth_verifier parameters["oauth_verifier"] end
oauth_version()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 63 def oauth_version parameters["oauth_version"] end
parameters()
click to toggle source
Parameter accessors
# File lib/oauth/request_proxy/base.rb, line 77 def parameters raise NotImplementedError, "Must be implemented by subclasses" end
parameters_for_signature()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 81 def parameters_for_signature parameters.reject { |k, _v| signature_and_unsigned_parameters.include?(k) } end
query_string_blank?()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 152 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
sign(options = {})
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 108 def sign(options = {}) OAuth::Signature.sign(self, options) end
sign!(options = {})
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 112 def sign!(options = {}) parameters["oauth_signature"] = sign(options) @signed = true signature end
signature_and_unsigned_parameters()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 93 def signature_and_unsigned_parameters unsigned_parameters + ["oauth_signature"] end
signature_base_string()
click to toggle source
See 9.1 in specs
# File lib/oauth/request_proxy/base.rb, line 119 def signature_base_string base = [method, normalized_uri, normalized_parameters] base.map { |v| escape(v) }.join("&") end
signed?()
click to toggle source
Has this request been signed yet?
# File lib/oauth/request_proxy/base.rb, line 125 def signed? @signed end
signed_uri(with_oauth = true)
click to toggle source
URI, including OAuth
parameters
# File lib/oauth/request_proxy/base.rb, line 130 def signed_uri(with_oauth = true) if signed? params = if with_oauth parameters else non_oauth_parameters end [uri, normalize(params)].join("?") else warn "This request has not yet been signed!" end end
Protected Instance Methods
header_params()
click to toggle source
# File lib/oauth/request_proxy/base.rb, line 162 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 " # parse the header into a Hash oauth_params = OAuth::Helper.parse_header(header) # remove non-OAuth parameters oauth_params.select! { |k, _v| k =~ /^oauth_/ } return oauth_params end {} end