lib/googleauth/signet.rb in googleauth-0.5.1 vs lib/googleauth/signet.rb in googleauth-0.5.2

- old
+ new

@@ -62,20 +62,41 @@ def on_refresh(&block) @refresh_listeners ||= [] @refresh_listeners << block end - alias_method :orig_fetch_access_token!, :fetch_access_token! + alias orig_fetch_access_token! fetch_access_token! def fetch_access_token!(options = {}) info = orig_fetch_access_token!(options) notify_refresh_listeners info end def notify_refresh_listeners listeners = @refresh_listeners || [] listeners.each do |block| block.call(self) + end + end + + 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 end end end