diff options
Diffstat (limited to 'drive/errors.go')
| -rw-r--r-- | drive/errors.go | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drive/errors.go b/drive/errors.go index e7631f7..f70f0f0 100644 --- a/drive/errors.go +++ b/drive/errors.go @@ -1,11 +1,16 @@ package drive import ( + "golang.org/x/net/context" "google.golang.org/api/googleapi" "time" ) -const MaxBackendErrorRetries = 5 +const MaxErrorRetries = 5 + +func isBackendOrRateLimitError(err error) bool { + return isBackendError(err) || isRateLimitError(err) +} func isBackendError(err error) bool { if err == nil { @@ -16,6 +21,19 @@ func isBackendError(err error) bool { return ok && ae.Code >= 500 && ae.Code <= 599 } +func isRateLimitError(err error) bool { + if err == nil { + return false + } + + ae, ok := err.(*googleapi.Error) + return ok && ae.Code == 403 +} + +func isTimeoutError(err error) bool { + return err == context.Canceled +} + func exponentialBackoffSleep(try int) { seconds := pow(2, try) time.Sleep(time.Duration(seconds) * time.Second) |
