Class: OAuth::Signature::Base

Inherits:
Object
  • Object
show all
Includes:
Helper
Defined in:
lib/oauth/signature/base.rb

Direct Known Subclasses

HMAC::Base, HMAC::MD5, MD5, PLAINTEXT, RSA::SHA1, SHA1

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helper

#escape, #generate_key

Constructor Details

#initialize(request, options = {}, &block) ⇒ Base

Returns a new instance of Base.

Raises:

  • (TypeError)


23
24
25
26
27
28
29
30
31
32
33
# File 'lib/oauth/signature/base.rb', line 23

def initialize(request, options = {}, &block)
  raise TypeError unless request.kind_of?(OAuth::RequestProxy::Base)
  @request = request
  @options = options
  if block_given?
    @token_secret, @consumer_secret = yield block.arity == 1 ? token : [token, consumer_key,nonce,request.timestamp]
  else
    @consumer_secret = @options[:consumer].secret
    @token_secret = @options[:token] ? @options[:token].secret : ''
  end
end

Instance Attribute Details

#consumer_secretObject (readonly)

Returns the value of attribute consumer_secret.



21
22
23
# File 'lib/oauth/signature/base.rb', line 21

def consumer_secret
  @consumer_secret
end

#optionsObject

Returns the value of attribute options.



10
11
12
# File 'lib/oauth/signature/base.rb', line 10

def options
  @options
end

#requestObject (readonly)

Returns the value of attribute request.



21
22
23
# File 'lib/oauth/signature/base.rb', line 21

def request
  @request
end

#token_secretObject (readonly)

Returns the value of attribute token_secret.



21
22
23
# File 'lib/oauth/signature/base.rb', line 21

def token_secret
  @token_secret
end

Class Method Details

.digest_class(digest_class = nil) ⇒ Object



16
17
18
19
# File 'lib/oauth/signature/base.rb', line 16

def self.digest_class(digest_class = nil)
  return @digest_class if digest_class.nil?
  @digest_class = digest_class
end

.implements(signature_method) ⇒ Object



12
13
14
# File 'lib/oauth/signature/base.rb', line 12

def self.implements(signature_method)
  OAuth::Signature.available_methods[signature_method] = self
end

Instance Method Details

#==(cmp_signature) ⇒ Object



39
40
41
# File 'lib/oauth/signature/base.rb', line 39

def ==(cmp_signature)
  Base64.decode64(signature) == Base64.decode64(cmp_signature)
end

#signatureObject



35
36
37
# File 'lib/oauth/signature/base.rb', line 35

def signature
  Base64.encode64(digest).chomp.gsub(/\n/,'')
end

#signature_base_stringObject



47
48
49
50
51
# File 'lib/oauth/signature/base.rb', line 47

def signature_base_string
  normalized_params = request.parameters_for_signature.sort.map { |k,v| [escape(k), escape(v)] * "=" }.join("&")
  base = [request.method, request.uri, normalized_params]
  sbs = base.map { |v| escape(v) }.join("&")
end

#verifyObject



43
44
45
# File 'lib/oauth/signature/base.rb', line 43

def verify
  self == self.request.signature
end