diff --git a/errors.go b/errors.go index cedd178..981a9a0 100644 --- a/errors.go +++ b/errors.go @@ -4,4 +4,5 @@ import "errors" var ( ErrEncKeyNotFound = errors.New("encryption key not found") + ErrIssuerNotFound = errors.New("issuer not found") ) diff --git a/pki.go b/pki.go index ad0ff13..31f1fda 100644 --- a/pki.go +++ b/pki.go @@ -1,5 +1,12 @@ package vault +import ( + "errors" + "github.com/hashicorp/vault/api" + "net/http" + "strings" +) + type PKI struct { Service } @@ -252,7 +259,7 @@ func (k *PKI) ReadIssuer(issuerName string) (*PKIReadIssuerResponse, error) { }, response, nil, ) if err != nil { - return nil, err + return nil, k.mapError(err) } return response, nil @@ -287,3 +294,16 @@ func (k *PKI) RevokeIssuer(issuerName string) (*PKIRevokeIssuerResponse, error) return response, nil } + +func (k *PKI) mapError(err error) error { + resErr := &api.ResponseError{} + if errors.As(err, &resErr) { + if resErr.StatusCode == http.StatusInternalServerError { + if strings.Contains(err.Error(), "unable to find PKI issuer for reference") { + return ErrIssuerNotFound + } + } + } + + return err +}