Class: Signet::OAuth2::Client
- Inherits:
-
Object
- Object
- Signet::OAuth2::Client
- 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.
Direct Known Subclasses
Google::Auth::GCECredentials, Google::Auth::ServiceAccountCredentials, Google::Auth::UserRefreshCredentials
Instance Method Summary collapse
-
#apply(a_hash, opts = {}) ⇒ Object
Returns a clone of a_hash updated with the authentication token.
-
#apply!(a_hash, opts = {}) ⇒ Object
Updates a_hash updated with the authentication token.
- #fetch_access_token!(options = {}) ⇒ Object
- #notify_refresh_listeners ⇒ Object
- #on_refresh(&block) ⇒ Object
- #orig_fetch_access_token! ⇒ Object
- #retry_with_error(max_retry_count = 5) ⇒ Object
-
#updater_proc ⇒ Object
Returns a reference to the #apply method, suitable for passing as a closure.
Instance Method Details
#apply(a_hash, opts = {}) ⇒ Object
Returns a clone of a_hash updated with the authentication token
50 51 52 53 54 |
# File 'lib/googleauth/signet.rb', line 50 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
42 43 44 45 46 47 |
# File 'lib/googleauth/signet.rb', line 42 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 access_token.nil? || expires_within?(60) a_hash[AUTH_METADATA_KEY] = "Bearer #{access_token}" end |
#fetch_access_token!(options = {}) ⇒ Object
68 69 70 71 72 |
# File 'lib/googleauth/signet.rb', line 68 def fetch_access_token!( = {}) info = orig_fetch_access_token!() notify_refresh_listeners info end |
#notify_refresh_listeners ⇒ Object
74 75 76 77 78 79 |
# File 'lib/googleauth/signet.rb', line 74 def notify_refresh_listeners listeners = @refresh_listeners || [] listeners.each do |block| block.call(self) end end |
#on_refresh(&block) ⇒ Object
62 63 64 65 |
# File 'lib/googleauth/signet.rb', line 62 def on_refresh(&block) @refresh_listeners ||= [] @refresh_listeners << block end |
#orig_fetch_access_token! ⇒ Object
67 |
# File 'lib/googleauth/signet.rb', line 67 alias orig_fetch_access_token! fetch_access_token! |
#retry_with_error(max_retry_count = 5) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/googleauth/signet.rb', line 81 def retry_with_error(max_retry_count = 5) retry_count = 0 begin yield rescue => e if e.is_a?(Signet::AuthorizationError) || e.is_a?(Signet::ParseError) raise e end 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 |
#updater_proc ⇒ Object
Returns a reference to the #apply method, suitable for passing as a closure
58 59 60 |
# File 'lib/googleauth/signet.rb', line 58 def updater_proc lambda(&method(:apply)) end |