Documentation
¶
Overview ¶
Package errors provides a way to return detailed information for an RPC request error. The error is normally JSON encoded.
Index ¶
- Variables
- func BadRequest(id, format string, a ...interface{}) error
- func Conflict(id, format string, a ...interface{}) error
- func ConvertGrpcCode(err error) codes.Code
- func FilterOut(err error, fns ...Matcher) error
- func Forbidden(id, format string, a ...interface{}) error
- func GrpcAcceptable(err error) bool
- func Http2GrpcCode(err *Error) codes.Code
- func InternalServerError(id, format string, a ...interface{}) error
- func MethodNotAllowed(id, format string, a ...interface{}) error
- func New(id, detail string, code int32) error
- func NotFound(id, format string, a ...interface{}) error
- func Reduce(err error) error
- func Timeout(id, format string, a ...interface{}) error
- func Unauthorized(id, format string, a ...interface{}) error
- func UnwrapIgnorableError(err string) (bool, string)
- func WrapIgnorableError(err error) error
- type Aggregate
- type Error
- type IgnorableError
- type Matcher
- type MessageCountMap
Constants ¶
This section is empty.
Variables ¶
var ErrPreconditionViolated = errors.New("precondition is violated")
ErrPreconditionViolated is returned when the precondition is violated
Functions ¶
func BadRequest ¶
BadRequest generates a 400 error.
func ConvertGrpcCode ¶
ConvertGrpcCode converts a standard Go error into its canonical code. Note that this is only used to translate the error returned by the server applications.
func FilterOut ¶
FilterOut removes all errors that match any of the matchers from the input error. If the input is a singular error, only that error is tested. If the input implements the Aggregate interface, the list of errors will be processed recursively.
This can be used, for example, to remove known-OK errors (such as io.EOF or os.PathNotFound) from a list of errors.
func GrpcAcceptable ¶
func Http2GrpcCode ¶
func InternalServerError ¶
InternalServerError generates a 500 error.
func MethodNotAllowed ¶
MethodNotAllowed generates a 405 error.
func Reduce ¶
Reduce will return err or, if err is an Aggregate and only has one item, the first item in the aggregate.
func Unauthorized ¶
Unauthorized generates a 401 error.
func UnwrapIgnorableError ¶
UnwrapIgnorableError tries to parse a JSON string into an error. If that fails, it will set the given string as the error detail.
func WrapIgnorableError ¶
IgnoreError generates a -1 error.
Types ¶
type Aggregate ¶
Aggregate represents an object that contains multiple errors, but does not necessarily have singular semantic meaning. The aggregate can be used with `errors.Is()` to check for the occurrence of a specific error type. Errors.As() is not supported, because the caller presumably cares about a specific error of potentially multiple that match the given type.
func AggregateGoroutines ¶
AggregateGoroutines runs the provided functions in parallel, stuffing all non-nil errors into the returned Aggregate. Returns nil if all the functions complete successfully.
func CreateAggregateFromMessageCountMap ¶
func CreateAggregateFromMessageCountMap(m MessageCountMap) Aggregate
CreateAggregateFromMessageCountMap converts MessageCountMap Aggregate
func Flatten ¶
Flatten takes an Aggregate, which may hold other Aggregates in arbitrary nesting, and flattens them all into a single Aggregate, recursively.
func NewAggregate ¶
NewAggregate converts a slice of errors into an Aggregate interface, which is itself an implementation of the error interface. If the slice is empty, this returns nil. It will check if any of the element of input error list is nil, to avoid nil pointer panic when call Error().
type Error ¶
type Error struct { Id string `json:"id"` Code int32 `json:"code"` Detail string `json:"detail"` Status string `json:"status"` }
Error implements the error interface.
type IgnorableError ¶
func (*IgnorableError) Error ¶
func (e *IgnorableError) Error() string
type MessageCountMap ¶
TODO: move this errors to tech-lab/utils MessageCountMap contains occurrence for each error message.