From dd84b9d64fb98746a230cd24233ff50a562c39c9 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Fri, 28 Apr 2023 01:36:44 +0800 Subject: --- cli/internal/util/status.go | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 cli/internal/util/status.go (limited to 'cli/internal/util/status.go') 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 +} -- cgit v1.2.3-70-g09d2