Class: OAuth::RequestProxy::Base
- Inherits:
-
Object
- Object
- OAuth::RequestProxy::Base
- Includes:
- Helper
- Defined in:
- lib/oauth/request_proxy/base.rb
Direct Known Subclasses
ActionControllerRequest, Curl::Easy, EventMachine::HttpRequest, JabberRequest, MockRequest, Net::HTTP::HTTPRequest, RackRequest, RestClient::Request, Typhoeus::Request
Instance Attribute Summary collapse
-
#options ⇒ Object
Returns the value of attribute options.
-
#request ⇒ Object
Returns the value of attribute request.
-
#unsigned_parameters ⇒ Object
Returns the value of attribute unsigned_parameters.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(request, options = {}) ⇒ Base
constructor
A new instance of Base.
- #non_oauth_parameters ⇒ Object
-
#normalized_parameters ⇒ Object
See 9.1.1.
-
#normalized_uri ⇒ Object
See 9.1.2 in specs.
-
#oauth_callback ⇒ Object
OAuth parameters.
- #oauth_consumer_key ⇒ Object (also: #consumer_key)
-
#oauth_header(options = {}) ⇒ Object
Authorization header for OAuth.
- #oauth_nonce ⇒ Object (also: #nonce)
- #oauth_parameters ⇒ Object
- #oauth_signature ⇒ Object (also: #signature)
- #oauth_signature_method ⇒ Object (also: #signature_method)
- #oauth_timestamp ⇒ Object (also: #timestamp)
- #oauth_token ⇒ Object (also: #token)
-
#oauth_verifier ⇒ Object
OAuth 1.0a only: value returned to the Consumer after user authorization and required when exchanging a Request Token for an Access Token.
- #oauth_version ⇒ Object
-
#parameters ⇒ Object
Parameter accessors.
- #parameters_for_signature ⇒ Object
- #query_string_blank? ⇒ Boolean
- #sign(options = {}) ⇒ Object
- #sign!(options = {}) ⇒ Object
- #signature_and_unsigned_parameters ⇒ Object
-
#signature_base_string ⇒ Object
See 9.1 in specs.
-
#signed? ⇒ Boolean
Has this request been signed yet?.
-
#signed_uri(with_oauth: true) ⇒ Object
URI, including OAuth parameters.
Methods included from Helper
_escape, escape, generate_key, generate_timestamp, normalize, normalize_nested_query, parse_header, stringify_keys, unescape
Constructor Details
#initialize(request, options = {}) ⇒ Base
Returns a new instance of Base.
17 18 19 20 21 |
# File 'lib/oauth/request_proxy/base.rb', line 17 def initialize(request, = {}) @request = request @unsigned_parameters = ([:unsigned_parameters] || []).map(&:to_s) = end |
Instance Attribute Details
#options ⇒ Object
Returns the value of attribute options.
15 16 17 |
# File 'lib/oauth/request_proxy/base.rb', line 15 def end |
#request ⇒ Object
Returns the value of attribute request.
15 16 17 |
# File 'lib/oauth/request_proxy/base.rb', line 15 def request @request end |
#unsigned_parameters ⇒ Object
Returns the value of attribute unsigned_parameters.
15 16 17 |
# File 'lib/oauth/request_proxy/base.rb', line 15 def unsigned_parameters @unsigned_parameters end |
Class Method Details
.proxies(klass) ⇒ Object
11 12 13 |
# File 'lib/oauth/request_proxy/base.rb', line 11 def self.proxies(klass) OAuth::RequestProxy.available_proxies[klass] = self end |
Instance Method Details
#non_oauth_parameters ⇒ Object
92 93 94 |
# File 'lib/oauth/request_proxy/base.rb', line 92 def non_oauth_parameters parameters.select { |k, _v| !OAuth::PARAMETERS.include?(k) } end |
#normalized_parameters ⇒ Object
See 9.1.1. in specs Normalize Request Parameters
107 108 109 |
# File 'lib/oauth/request_proxy/base.rb', line 107 def normalized_parameters normalize(parameters_for_signature) end |
#normalized_uri ⇒ Object
See 9.1.2 in specs
101 102 103 104 |
# File 'lib/oauth/request_proxy/base.rb', line 101 def normalized_uri u = URI.parse(uri) "#{u.scheme.downcase}://#{u.host.downcase}#{":#{u.port}" if (u.scheme.casecmp("http").zero? && u.port != 80) || (u.scheme.casecmp("https").zero? && u.port != 443)}#{(u.path && u.path != "") ? u.path : "/"}" end |
#oauth_callback ⇒ Object
OAuth parameters
25 26 27 |
# File 'lib/oauth/request_proxy/base.rb', line 25 def oauth_callback parameters["oauth_callback"] end |
#oauth_consumer_key ⇒ Object Also known as: consumer_key
29 30 31 |
# File 'lib/oauth/request_proxy/base.rb', line 29 def oauth_consumer_key parameters["oauth_consumer_key"] end |
#oauth_header(options = {}) ⇒ Object
Authorization header for OAuth
148 149 150 151 152 153 |
# File 'lib/oauth/request_proxy/base.rb', line 148 def oauth_header( = {}) header_params_str = oauth_parameters.map { |k, v| "#{k}=\"#{escape(v)}\"" }.join(", ") realm = "realm=\"#{options[:realm]}\", " if [:realm] "OAuth #{realm}#{header_params_str}" end |
#oauth_nonce ⇒ Object Also known as: nonce
33 34 35 |
# File 'lib/oauth/request_proxy/base.rb', line 33 def oauth_nonce parameters["oauth_nonce"] end |
#oauth_parameters ⇒ Object
88 89 90 |
# File 'lib/oauth/request_proxy/base.rb', line 88 def oauth_parameters parameters.select { |k, v| OAuth::PARAMETERS.include?(k) && !v.nil? && v != "" } end |
#oauth_signature ⇒ Object Also known as: signature
37 38 39 40 |
# File 'lib/oauth/request_proxy/base.rb', line 37 def oauth_signature # TODO: can this be nil? [parameters["oauth_signature"]].flatten.first || "" end |
#oauth_signature_method ⇒ Object Also known as: signature_method
42 43 44 45 46 47 48 49 |
# 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 |
#oauth_timestamp ⇒ Object Also known as: timestamp
51 52 53 |
# File 'lib/oauth/request_proxy/base.rb', line 51 def parameters["oauth_timestamp"] end |
#oauth_token ⇒ Object Also known as: token
55 56 57 |
# File 'lib/oauth/request_proxy/base.rb', line 55 def oauth_token parameters["oauth_token"] end |
#oauth_verifier ⇒ Object
OAuth 1.0a only: value returned to the Consumer after user authorization and required when exchanging a Request Token for an Access Token. Not present in OAuth 1.0 flows.
62 63 64 |
# File 'lib/oauth/request_proxy/base.rb', line 62 def oauth_verifier parameters["oauth_verifier"] end |
#oauth_version ⇒ Object
66 67 68 |
# File 'lib/oauth/request_proxy/base.rb', line 66 def oauth_version parameters["oauth_version"] end |
#parameters ⇒ Object
Parameter accessors
80 81 82 |
# File 'lib/oauth/request_proxy/base.rb', line 80 def parameters raise NotImplementedError, "Must be implemented by subclasses" end |
#parameters_for_signature ⇒ Object
84 85 86 |
# File 'lib/oauth/request_proxy/base.rb', line 84 def parameters_for_signature parameters.select { |k, _v| !signature_and_unsigned_parameters.include?(k) } end |
#query_string_blank? ⇒ Boolean
155 156 157 158 159 160 161 |
# File 'lib/oauth/request_proxy/base.rb', line 155 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 = {}) ⇒ Object
111 112 113 |
# File 'lib/oauth/request_proxy/base.rb', line 111 def sign( = {}) OAuth::Signature.sign(self, ) end |
#sign!(options = {}) ⇒ Object
115 116 117 118 119 |
# File 'lib/oauth/request_proxy/base.rb', line 115 def sign!( = {}) parameters["oauth_signature"] = sign() @signed = true signature end |
#signature_and_unsigned_parameters ⇒ Object
96 97 98 |
# File 'lib/oauth/request_proxy/base.rb', line 96 def signature_and_unsigned_parameters unsigned_parameters + ["oauth_signature"] end |
#signature_base_string ⇒ Object
See 9.1 in specs
122 123 124 125 |
# File 'lib/oauth/request_proxy/base.rb', line 122 def signature_base_string base = [method, normalized_uri, normalized_parameters] base.map { |v| escape(v) }.join("&") end |
#signed? ⇒ Boolean
Has this request been signed yet?
128 129 130 |
# File 'lib/oauth/request_proxy/base.rb', line 128 def signed? @signed end |
#signed_uri(with_oauth: true) ⇒ Object
URI, including OAuth parameters
133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/oauth/request_proxy/base.rb', line 133 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 |