Class: Sworn::Verifier

Inherits:
Object
  • Object
show all
Defined in:
lib/sworn/verifier.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request, options = {}) ⇒ Verifier

Returns a new instance of Verifier.



5
6
7
8
9
# File 'lib/sworn/verifier.rb', line 5

def initialize(request, options = {})
  @config = options.fetch(:config) { Sworn.configuration }
  @request = request
  @oauth = SimpleOAuth::Header.parse(request.env["HTTP_AUTHORIZATION"])
end

Instance Attribute Details

#configObject

Returns the value of attribute config.



3
4
5
# File 'lib/sworn/verifier.rb', line 3

def config
  @config
end

#oauthObject

Returns the value of attribute oauth.



3
4
5
# File 'lib/sworn/verifier.rb', line 3

def oauth
  @oauth
end

#requestObject

Returns the value of attribute request.



3
4
5
# File 'lib/sworn/verifier.rb', line 3

def request
  @request
end

Instance Method Details

#expired?Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
# File 'lib/sworn/verifier.rb', line 15

def expired?
  timestamp = oauth.fetch(:timestamp).to_i
  now = Time.now.to_i
  window = (now - config.max_drift .. now + config.max_drift)
  !window.include?(timestamp)
end

#replayed?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/sworn/verifier.rb', line 22

def replayed?
  config.replay_protector.replayed?(oauth)
end

#unsigned?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/sworn/verifier.rb', line 11

def unsigned?
  oauth.empty?
end

#valid?Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sworn/verifier.rb', line 26

def valid?
  consumer_key = oauth[:consumer_key]
  consumer_secret = config.consumers[consumer_key]
  access_token = oauth[:token]
  token_secret = config.tokens[access_token]

  valid = SimpleOAuth::Header.new(
    request.request_method,
    request.url,
    request.params,
    oauth
  ).valid?(:consumer_secret => consumer_secret, :token_secret => token_secret)
end