Class: OAuth::RequestProxy::Base
- Inherits:
-
Object
- Object
- OAuth::RequestProxy::Base
- Includes:
- Helper
- Defined in:
- lib/oauth/request_proxy/base.rb
Direct Known Subclasses
ActionControllerRequest, JabberRequest, MockRequest, Net::HTTP::HTTPRequest, RackRequest
Instance Attribute Summary collapse
-
#options ⇒ Object
Returns the value of attribute options.
-
#request ⇒ Object
Returns the value of attribute request.
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_consumer_key ⇒ Object
(also: #consumer_key)
OAuth parameters.
-
#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_version ⇒ Object
-
#parameters ⇒ Object
Parameter accessors.
- #parameters_for_signature ⇒ Object
- #sign(options = {}) ⇒ Object
- #sign!(options = {}) ⇒ 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, #generate_key, #generate_timestamp, #normalize, #parse_header, #unescape
Constructor Details
#initialize(request, options = {}) ⇒ Base
Returns a new instance of Base.
14 15 16 17 |
# File 'lib/oauth/request_proxy/base.rb', line 14 def initialize(request, = {}) @request = request @options = end |
Instance Attribute Details
#options ⇒ Object
Returns the value of attribute options.
12 13 14 |
# File 'lib/oauth/request_proxy/base.rb', line 12 def @options end |
#request ⇒ Object
Returns the value of attribute request.
12 13 14 |
# File 'lib/oauth/request_proxy/base.rb', line 12 def request @request end |
Class Method Details
.proxies(klass) ⇒ Object
8 9 10 |
# File 'lib/oauth/request_proxy/base.rb', line 8 def self.proxies(klass) OAuth::RequestProxy.available_proxies[klass] = self end |
Instance Method Details
#non_oauth_parameters ⇒ Object
79 80 81 |
# File 'lib/oauth/request_proxy/base.rb', line 79 def non_oauth_parameters parameters.reject { |k,v| OAuth::PARAMETERS.include?(k) } end |
#normalized_parameters ⇒ Object
See 9.1.1. in specs Normalize Request Parameters
90 91 92 |
# File 'lib/oauth/request_proxy/base.rb', line 90 def normalized_parameters normalize(parameters_for_signature) end |
#normalized_uri ⇒ Object
See 9.1.2 in specs
84 85 86 87 |
# File 'lib/oauth/request_proxy/base.rb', line 84 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 |
#oauth_consumer_key ⇒ Object Also known as: consumer_key
OAuth parameters
21 22 23 |
# File 'lib/oauth/request_proxy/base.rb', line 21 def oauth_consumer_key parameters['oauth_consumer_key'] end |
#oauth_header(options = {}) ⇒ Object
Authorization header for OAuth
131 132 133 134 135 136 |
# File 'lib/oauth/request_proxy/base.rb', line 131 def oauth_header( = {}) header_params_str = oauth_parameters.map { |k,v| "#{k}=\"#{escape(v)}\"" }.join(', ') realm = "realm=\"#{[:realm]}\", " if [:realm] "OAuth #{realm}#{header_params_str}" end |
#oauth_nonce ⇒ Object Also known as: nonce
25 26 27 |
# File 'lib/oauth/request_proxy/base.rb', line 25 def oauth_nonce parameters['oauth_nonce'] end |
#oauth_parameters ⇒ Object
75 76 77 |
# File 'lib/oauth/request_proxy/base.rb', line 75 def oauth_parameters parameters.select { |k,v| OAuth::PARAMETERS.include?(k) }.reject { |k,v| v == "" } end |
#oauth_signature ⇒ Object Also known as: signature
29 30 31 32 |
# File 'lib/oauth/request_proxy/base.rb', line 29 def oauth_signature # TODO can this be nil? parameters['oauth_signature'] || "" end |
#oauth_signature_method ⇒ Object Also known as: signature_method
34 35 36 37 38 39 40 41 |
# File 'lib/oauth/request_proxy/base.rb', line 34 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
43 44 45 |
# File 'lib/oauth/request_proxy/base.rb', line 43 def parameters['oauth_timestamp'] end |
#oauth_token ⇒ Object Also known as: token
47 48 49 |
# File 'lib/oauth/request_proxy/base.rb', line 47 def oauth_token parameters['oauth_token'] end |
#oauth_version ⇒ Object
51 52 53 |
# File 'lib/oauth/request_proxy/base.rb', line 51 def oauth_version parameters["oauth_version"] end |
#parameters ⇒ Object
Parameter accessors
65 66 67 |
# File 'lib/oauth/request_proxy/base.rb', line 65 def parameters raise NotImplementedError, "Must be implemented by subclasses" end |
#parameters_for_signature ⇒ Object
69 70 71 72 73 |
# File 'lib/oauth/request_proxy/base.rb', line 69 def parameters_for_signature parameters.reject do |k,v| k == "oauth_signature" || v.respond_to?(:read) end end |
#sign(options = {}) ⇒ Object
94 95 96 |
# File 'lib/oauth/request_proxy/base.rb', line 94 def sign( = {}) OAuth::Signature.sign(self, ) end |
#sign!(options = {}) ⇒ Object
98 99 100 101 102 |
# File 'lib/oauth/request_proxy/base.rb', line 98 def sign!( = {}) parameters["oauth_signature"] = sign() @signed = true signature end |
#signature_base_string ⇒ Object
See 9.1 in specs
105 106 107 108 |
# File 'lib/oauth/request_proxy/base.rb', line 105 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?
111 112 113 |
# File 'lib/oauth/request_proxy/base.rb', line 111 def signed? @signed end |
#signed_uri(with_oauth = true) ⇒ Object
URI, including OAuth parameters
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/oauth/request_proxy/base.rb', line 116 def signed_uri(with_oauth = true) if signed? if with_oauth params = parameters else params = non_oauth_parameters end [uri, normalize(params)] * "?" else STDERR.puts "This request has not yet been signed!" end end |