Module: Mrkt::Authentication

Included in:
Client
Defined in:
lib/mrkt/concerns/authentication.rb

Instance Method Summary collapse

Instance Method Details

#add_authorization(req) ⇒ Object



45
46
47
# File 'lib/mrkt/concerns/authentication.rb', line 45

def add_authorization(req)
  req.headers[:authorization] = "Bearer #{@token}"
end

#authenticateObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/mrkt/concerns/authentication.rb', line 30

def authenticate
  connection.get('/identity/oauth/token', authentication_params).tap do |response|
    data = response.body

    @token = data.fetch(:access_token)
    @token_type = data.fetch(:token_type)
    @valid_until = Time.now + data.fetch(:expires_in)
    @scope = data.fetch(:scope)
  end
end

#authenticate!Object



3
4
5
6
7
8
9
10
11
# File 'lib/mrkt/concerns/authentication.rb', line 3

def authenticate!
  return if authenticated?

  authenticate

  retry_authentication if !authenticated? && @retry_authentication

  raise Mrkt::Errors::AuthorizationError, 'Client not authenticated' unless authenticated?
end

#authenticated?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/mrkt/concerns/authentication.rb', line 13

def authenticated?
  @token && valid_token?
end

#authentication_paramsObject



41
42
43
# File 'lib/mrkt/concerns/authentication.rb', line 41

def authentication_params
  merge_params(required_authentication_params, optional_authentication_params)
end

#retry_authenticationObject



21
22
23
24
25
26
27
28
# File 'lib/mrkt/concerns/authentication.rb', line 21

def retry_authentication
  @retry_authentication_count.times do
    sleep(@retry_authentication_wait_seconds) if @retry_authentication_wait_seconds.positive?
    authenticate

    break if authenticated?
  end
end

#valid_token?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/mrkt/concerns/authentication.rb', line 17

def valid_token?
  @valid_until && Time.now < @valid_until
end