helpers/vault/utils.go (37 lines of code) (raw):

package vault import ( "errors" "fmt" "strings" "github.com/hashicorp/vault/api" ) type unwrappedAPIResponseError struct { statusCode int apiErrors string } func newUnwrappedAPIResponseError(statusCode int, errors []string) *unwrappedAPIResponseError { return &unwrappedAPIResponseError{ statusCode: statusCode, apiErrors: strings.Join(errors, ", "), } } func (e *unwrappedAPIResponseError) Error() string { return fmt.Sprintf("api error: status code %d: %s", e.statusCode, e.apiErrors) } func (e *unwrappedAPIResponseError) Is(err error) bool { eerr, ok := err.(*unwrappedAPIResponseError) if !ok { return false } return eerr.statusCode == e.statusCode && eerr.apiErrors == e.apiErrors } func unwrapAPIResponseError(err error) error { if err == nil { return nil } apiErr := new(api.ResponseError) if !errors.As(err, &apiErr) { return err } return newUnwrappedAPIResponseError(apiErr.StatusCode, apiErr.Errors) }