Class: Signet::OAuth2::Client

Inherits:
Object
  • Object
show all
Includes:
Google::Auth::BaseClient
Defined in:
lib/googleauth/signet.rb

Overview

Signet::OAuth2::Client creates an OAuth2 client

This reopens Client to add #apply and #apply! methods which update a hash with the fetched authentication token.

Constant Summary

Constants included from Google::Auth::BaseClient

Google::Auth::BaseClient::AUTH_METADATA_KEY

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Google::Auth::BaseClient

#apply, #apply!, #expires_within?, #needs_access_token?, #notify_refresh_listeners, #on_refresh, #updater_proc

Instance Attribute Details

#universe_domainObject

Set the universe domain



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

def universe_domain
  @universe_domain
end

Instance Method Details

#build_default_connectionObject



64
65
66
67
68
69
70
71
72
# File 'lib/googleauth/signet.rb', line 64

def build_default_connection
  if !defined?(@connection_info)
    nil
  elsif @connection_info.respond_to? :call
    @connection_info.call
  else
    @connection_info
  end
end

#configure_connection(options) ⇒ Object



37
38
39
40
41
# File 'lib/googleauth/signet.rb', line 37

def configure_connection options
  @connection_info =
    options[:connection_builder] || options[:default_connection]
  self
end

#fetch_access_token!(options = {}) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/googleauth/signet.rb', line 52

def fetch_access_token! options = {}
  unless options[:connection]
    connection = build_default_connection
    options = options.merge connection: connection if connection
  end
  info = retry_with_error do
    orig_fetch_access_token! options
  end
  notify_refresh_listeners
  info
end

#orig_fetch_access_token!Object



51
# File 'lib/googleauth/signet.rb', line 51

alias orig_fetch_access_token! fetch_access_token!

#retry_with_error(max_retry_count = 5) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/googleauth/signet.rb', line 74

def retry_with_error max_retry_count = 5
  retry_count = 0

  begin
    yield
  rescue StandardError => e
    raise e if e.is_a?(Signet::AuthorizationError) || e.is_a?(Signet::ParseError)

    if retry_count < max_retry_count
      retry_count += 1
      sleep retry_count * 0.3
      retry
    else
      msg = "Unexpected error: #{e.inspect}"
      raise Signet::AuthorizationError, msg
    end
  end
end

#token_typeObject

The token type as symbol, either :id_token or :access_token



44
45
46
# File 'lib/googleauth/signet.rb', line 44

def token_type
  target_audience ? :id_token : :access_token
end

#update_token!(options = {}) ⇒ Object



30
31
32
33
34
35
# File 'lib/googleauth/signet.rb', line 30

def update_token! options = {}
  options = deep_hash_normalize options
  update_token_signet_base options
  self.universe_domain = options[:universe_domain] if options.key? :universe_domain
  self
end

#update_token_signet_baseObject



28
# File 'lib/googleauth/signet.rb', line 28

alias update_token_signet_base update_token!