VictoriaMetrics/vendor/github.com/aws/smithy-go/errors.go
Zakhar Bessarab 87c77727e4
vmbackup: update AWS SDK to v2 (#3174)
* lib/backup/s3remote: update AWS SDK to v2

* Update lib/backup/s3remote/s3.go

Co-authored-by: Aliaksandr Valialkin <valyala@victoriametrics.com>

* lib/backup/s3remote: refactor error handling

Co-authored-by: Aliaksandr Valialkin <valyala@victoriametrics.com>
2022-10-01 17:12:07 +03:00

137 lines
3.8 KiB
Go

package smithy
import "fmt"
// APIError provides the generic API and protocol agnostic error type all SDK
// generated exception types will implement.
type APIError interface {
error
// ErrorCode returns the error code for the API exception.
ErrorCode() string
// ErrorMessage returns the error message for the API exception.
ErrorMessage() string
// ErrorFault returns the fault for the API exception.
ErrorFault() ErrorFault
}
// GenericAPIError provides a generic concrete API error type that SDKs can use
// to deserialize error responses into. Should be used for unmodeled or untyped
// errors.
type GenericAPIError struct {
Code string
Message string
Fault ErrorFault
}
// ErrorCode returns the error code for the API exception.
func (e *GenericAPIError) ErrorCode() string { return e.Code }
// ErrorMessage returns the error message for the API exception.
func (e *GenericAPIError) ErrorMessage() string { return e.Message }
// ErrorFault returns the fault for the API exception.
func (e *GenericAPIError) ErrorFault() ErrorFault { return e.Fault }
func (e *GenericAPIError) Error() string {
return fmt.Sprintf("api error %s: %s", e.Code, e.Message)
}
var _ APIError = (*GenericAPIError)(nil)
// OperationError decorates an underlying error which occurred while invoking
// an operation with names of the operation and API.
type OperationError struct {
ServiceID string
OperationName string
Err error
}
// Service returns the name of the API service the error occurred with.
func (e *OperationError) Service() string { return e.ServiceID }
// Operation returns the name of the API operation the error occurred with.
func (e *OperationError) Operation() string { return e.OperationName }
// Unwrap returns the nested error if any, or nil.
func (e *OperationError) Unwrap() error { return e.Err }
func (e *OperationError) Error() string {
return fmt.Sprintf("operation error %s: %s, %v", e.ServiceID, e.OperationName, e.Err)
}
// DeserializationError provides a wrapper for an error that occurs during
// deserialization.
type DeserializationError struct {
Err error // original error
Snapshot []byte
}
// Error returns a formatted error for DeserializationError
func (e *DeserializationError) Error() string {
const msg = "deserialization failed"
if e.Err == nil {
return msg
}
return fmt.Sprintf("%s, %v", msg, e.Err)
}
// Unwrap returns the underlying Error in DeserializationError
func (e *DeserializationError) Unwrap() error { return e.Err }
// ErrorFault provides the type for a Smithy API error fault.
type ErrorFault int
// ErrorFault enumeration values
const (
FaultUnknown ErrorFault = iota
FaultServer
FaultClient
)
func (f ErrorFault) String() string {
switch f {
case FaultServer:
return "server"
case FaultClient:
return "client"
default:
return "unknown"
}
}
// SerializationError represents an error that occurred while attempting to serialize a request
type SerializationError struct {
Err error // original error
}
// Error returns a formatted error for SerializationError
func (e *SerializationError) Error() string {
const msg = "serialization failed"
if e.Err == nil {
return msg
}
return fmt.Sprintf("%s: %v", msg, e.Err)
}
// Unwrap returns the underlying Error in SerializationError
func (e *SerializationError) Unwrap() error { return e.Err }
// CanceledError is the error that will be returned by an API request that was
// canceled. API operations given a Context may return this error when
// canceled.
type CanceledError struct {
Err error
}
// CanceledError returns true to satisfy interfaces checking for canceled errors.
func (*CanceledError) CanceledError() bool { return true }
// Unwrap returns the underlying error, if there was one.
func (e *CanceledError) Unwrap() error {
return e.Err
}
func (e *CanceledError) Error() string {
return fmt.Sprintf("canceled, %v", e.Err)
}