class OAuth::Signature::Base

Attributes

consumer_secret[R]
options[RW]
request[R]
token_secret[R]

Public Class Methods

implements(signature_method = nil) click to toggle source
   # File lib/oauth/signature/base.rb
16 def self.implements(signature_method = nil)
17   return @implements if signature_method.nil?
18 
19   @implements = signature_method
20   OAuth::Signature.available_methods[@implements] = self
21 end
new(request, options = {}) { |arity == 1| ... } click to toggle source
   # File lib/oauth/signature/base.rb
23 def initialize(request, options = {}, &block)
24   raise TypeError unless request.is_a?(OAuth::RequestProxy::Base)
25 
26   @request = request
27   @options = options
28 
29   ## consumer secret was determined beforehand
30 
31   @consumer_secret = options[:consumer].secret if options[:consumer]
32 
33   # presence of :consumer_secret option will override any Consumer that's provided
34   @consumer_secret = options[:consumer_secret] if options[:consumer_secret]
35 
36   ## token secret was determined beforehand
37 
38   @token_secret = options[:token].secret if options[:token]
39 
40   # presence of :token_secret option will override any Token that's provided
41   @token_secret = options[:token_secret] if options[:token_secret]
42 
43   # override secrets based on the values returned from the block (if any)
44   if block
45     # consumer secret and token secret need to be looked up based on pieces of the request
46     secrets = yield (block.arity == 1) ? request : [token, consumer_key, nonce, request.timestamp]
47     if secrets.is_a?(Array) && secrets.size == 2
48       @token_secret = secrets[0]
49       @consumer_secret = secrets[1]
50     end
51   end
52 end

Public Instance Methods

==(other) click to toggle source
   # File lib/oauth/signature/base.rb
58 def ==(other)
59   check = signature.bytesize ^ other.bytesize
60   signature.bytes.zip(other.bytes) { |x, y| check |= x ^ y.to_i }
61   check.zero?
62 end
body_hash() click to toggle source
   # File lib/oauth/signature/base.rb
72 def body_hash
73   raise_instantiation_error
74 end
signature() click to toggle source
   # File lib/oauth/signature/base.rb
54 def signature
55   Base64.encode64(digest).chomp.delete("\n")
56 end
signature_base_string() click to toggle source
   # File lib/oauth/signature/base.rb
68 def signature_base_string
69   request.signature_base_string
70 end
verify() click to toggle source
   # File lib/oauth/signature/base.rb
64 def verify
65   self == request.signature
66 end

Private Instance Methods

consumer_key() click to toggle source
   # File lib/oauth/signature/base.rb
82 def consumer_key
83   request.consumer_key
84 end
digest() click to toggle source
   # File lib/oauth/signature/base.rb
94 def digest
95   raise_instantiation_error
96 end
nonce() click to toggle source
   # File lib/oauth/signature/base.rb
86 def nonce
87   request.nonce
88 end
raise_instantiation_error() click to toggle source
    # File lib/oauth/signature/base.rb
 98 def raise_instantiation_error
 99   raise NotImplementedError, "Cannot instantiate #{self.class.name} class directly."
100 end
secret() click to toggle source
   # File lib/oauth/signature/base.rb
90 def secret
91   "#{escape(consumer_secret)}&#{escape(token_secret)}"
92 end
token() click to toggle source
   # File lib/oauth/signature/base.rb
78 def token
79   request.token
80 end