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