1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-12-23 22:11:10 +02:00
Files
imgproxy/ierrors/errors.go
2025-08-03 03:31:23 +02:00

56 lines
926 B
Go

package ierrors
import (
"github.com/imgproxy/imgproxy/v3/errwrap"
)
type Error = errwrap.ErrWrap
type Option func(*Error) *Error
// Now, it's fallback to the original Wrap function
func Wrap(err error, stackSkip int, opts ...Option) *Error {
if err == nil {
return nil
}
var e *Error
x, ok := err.(*Error)
if ok {
e = errwrap.Wrap(x)
} else {
e = errwrap.From(err, stackSkip)
}
for _, opt := range opts {
e = opt(e)
}
return e
}
func WithStatusCode(code int) Option {
return func(e *Error) *Error {
x := e.WithStatusCode(code)
return x
}
}
func WithPublicMessage(msg string) Option {
return func(e *Error) *Error {
return e.WithPublicMessage(msg)
}
}
func WithPrefix(prefix string) Option {
return func(e *Error) *Error {
return errwrap.Wrapf(e, "%s", prefix)
}
}
func WithShouldReport(report bool) Option {
return func(e *Error) *Error {
return e.WithShouldReport(report)
}
}