mirror of https://github.com/golang-jwt/jwt.git
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
|
//go:build go1.20
|
||
|
// +build go1.20
|
||
|
|
||
|
package jwt
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
)
|
||
|
|
||
|
// Unwrap implements the multiple error unwrapping for this error type, which is
|
||
|
// possible in Go 1.20.
|
||
|
func (je joinedError) Unwrap() []error {
|
||
|
return je.errs
|
||
|
}
|
||
|
|
||
|
// newError creates a new error message with a detailed error message. The
|
||
|
// message will be prefixed with the contents of the supplied error type.
|
||
|
// Additionally, more errors, that provide more context can be supplied which
|
||
|
// will be appended to the message. This makes use of Go 1.20's possibility to
|
||
|
// include more than one %w formatting directive in [fmt.Errorf].
|
||
|
//
|
||
|
// For example,
|
||
|
//
|
||
|
// newError("no keyfunc was provided", ErrTokenUnverifiable)
|
||
|
//
|
||
|
// will produce the error string
|
||
|
//
|
||
|
// "token is unverifiable: no keyfunc was provided"
|
||
|
func newError(message string, err error, more ...error) error {
|
||
|
var format string
|
||
|
var args []any
|
||
|
if message != "" {
|
||
|
format = "%w: %s"
|
||
|
args = []any{err, message}
|
||
|
} else {
|
||
|
format = "%w"
|
||
|
args = []any{err}
|
||
|
}
|
||
|
|
||
|
for _, e := range more {
|
||
|
format += ": %w"
|
||
|
args = append(args, e)
|
||
|
}
|
||
|
|
||
|
err = fmt.Errorf(format, args...)
|
||
|
return err
|
||
|
}
|