diff options
| author | 2023-04-28 01:36:44 +0800 | |
|---|---|---|
| committer | 2023-04-28 01:36:44 +0800 | |
| commit | dd84b9d64fb98746a230cd24233ff50a562c39c9 (patch) | |
| tree | b583261ef00b3afe72ec4d6dacb31e57779a6faf /cli/internal/util/status.go | |
| parent | 0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff) | |
| download | HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip | |
Diffstat (limited to 'cli/internal/util/status.go')
| -rw-r--r-- | cli/internal/util/status.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/cli/internal/util/status.go b/cli/internal/util/status.go new file mode 100644 index 0000000..23ae165 --- /dev/null +++ b/cli/internal/util/status.go @@ -0,0 +1,47 @@ +package util + +import "fmt" + +// CachingStatus represents the api server's perspective +// on whether remote caching should be allowed +type CachingStatus int + +const ( + // CachingStatusDisabled indicates that the server will not accept or serve artifacts + CachingStatusDisabled CachingStatus = iota + // CachingStatusEnabled indicates that the server will accept and serve artifacts + CachingStatusEnabled + // CachingStatusOverLimit indicates that a usage limit has been hit and the + // server will temporarily not accept or serve artifacts + CachingStatusOverLimit + // CachingStatusPaused indicates that a customer's spending has been paused and the + // server will temporarily not accept or serve artifacts + CachingStatusPaused +) + +// CachingStatusFromString parses a raw string to a caching status enum value +func CachingStatusFromString(raw string) (CachingStatus, error) { + switch raw { + case "disabled": + return CachingStatusDisabled, nil + case "enabled": + return CachingStatusEnabled, nil + case "over_limit": + return CachingStatusOverLimit, nil + case "paused": + return CachingStatusPaused, nil + default: + return CachingStatusDisabled, fmt.Errorf("unknown caching status: %v", raw) + } +} + +// CacheDisabledError is an error used to indicate that remote caching +// is not available. +type CacheDisabledError struct { + Status CachingStatus + Message string +} + +func (cd *CacheDisabledError) Error() string { + return cd.Message +} |
