Module: Google::Auth::BaseClient

Included in:
ExternalAccount::BaseCredentials, Signet::OAuth2::Client
Defined in:
lib/googleauth/base_client.rb

Overview

BaseClient is a class used to contain common methods that are required by any Credentials Client, including AwsCredentials, ServiceAccountCredentials, and UserRefreshCredentials. This is a superclass of Signet::OAuth2::Client and has been created to create a generic interface for all credentials clients to use, including ones which do not inherit from Signet::OAuth2::Client.

Constant Summary collapse

AUTH_METADATA_KEY =
:authorization

Instance Method Summary collapse

Instance Method Details

#apply(a_hash, opts = {}) ⇒ Object

Returns a clone of a_hash updated with the authentication token



36
37
38
39
40
# File 'lib/googleauth/base_client.rb', line 36

def apply a_hash, opts = {}
  a_copy = a_hash.clone
  apply! a_copy, opts
  a_copy
end

#apply!(a_hash, opts = {}) ⇒ Object

Updates a_hash updated with the authentication token



28
29
30
31
32
33
# File 'lib/googleauth/base_client.rb', line 28

def apply! a_hash, opts = {}
  # fetch the access token there is currently not one, or if the client
  # has expired
  fetch_access_token! opts if needs_access_token?
  a_hash[AUTH_METADATA_KEY] = "Bearer #{send token_type}"
end

#expires_within?Boolean

Returns:

  • (Boolean)

Raises:

  • (NoMethodError)


65
66
67
# File 'lib/googleauth/base_client.rb', line 65

def expires_within?
  raise NoMethodError, "expires_within? not implemented"
end

#needs_access_token?Boolean

Whether the id_token or access_token is missing or about to expire.

Returns:

  • (Boolean)


43
44
45
# File 'lib/googleauth/base_client.rb', line 43

def needs_access_token?
  send(token_type).nil? || expires_within?(60)
end

#notify_refresh_listenersObject



58
59
60
61
62
63
# File 'lib/googleauth/base_client.rb', line 58

def notify_refresh_listeners
  listeners = defined?(@refresh_listeners) ? @refresh_listeners : []
  listeners.each do |block|
    block.call self
  end
end

#on_refresh(&block) ⇒ Object



53
54
55
56
# File 'lib/googleauth/base_client.rb', line 53

def on_refresh &block
  @refresh_listeners = [] unless defined? @refresh_listeners
  @refresh_listeners << block
end

#updater_procObject

Returns a reference to the #apply method, suitable for passing as a closure



49
50
51
# File 'lib/googleauth/base_client.rb', line 49

def updater_proc
  proc { |a_hash, opts = {}| apply a_hash, opts }
end