51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package errors
|
|
|
|
// ResponsableError is an error that has information useful in an HTTP response.
|
|
// The string returned by Error should be suitable for logging useful information
|
|
// to assist debugging the error.
|
|
// GetStatus should return an appropriate HTTP status.
|
|
// GetMsg should return a message suitable to display to the end user. If the message
|
|
// returned by Error is safe for the end user, it may simply call that.
|
|
// GetStatus should not return a value outside of the 100 - 599 range.
|
|
type ResponsableError interface {
|
|
Error() string
|
|
GetStatus() int
|
|
GetMsg() string
|
|
}
|
|
|
|
// SettableError is a ResponsableError which can be modified after initial creation.
|
|
// The Status method can set the status, while the Msg method can set user message.
|
|
// If any values are passed after the message, it should be passed to fmt.Sprintf for formatting.
|
|
// Methods are chainable.
|
|
// SetStatus should not use a value outside of 100-599. It may either ignore such values, or panic.
|
|
type SettableError interface {
|
|
ResponsableError
|
|
Status(int) SettableError
|
|
Msg(string, ...any) SettableError
|
|
}
|
|
|
|
// UnwrappableError allows a ResponsableError to wrap another error.
|
|
// It may be appropriate for Error() to delegate to the wrapped error.
|
|
type UnwrappableError interface {
|
|
ResponsableError
|
|
Unwrap() error
|
|
}
|
|
|
|
// UnwrappableErrorrs allows a ResponsableError to wrap multiple errors.
|
|
// It may be appropriate for Error() to either delegate to the first error,
|
|
// the last error, or to concatenate the return values of all wrapped errors,
|
|
// similar to errors returned by errors.Join
|
|
type UnwrappableErrors interface {
|
|
ResponsableError
|
|
Unwrap() []error
|
|
}
|
|
|
|
type wrappedError interface {
|
|
Error() string
|
|
Unwrap() error
|
|
}
|
|
|
|
type wrappedErrors interface {
|
|
Error() string
|
|
Unwrap() []error
|
|
}
|