Files
descrybe/apps/api/internal/marketing/errors.go
T

33 lines
750 B
Go
Raw Normal View History

package marketing
import (
"errors"
"github.com/descrybe/descrybe-v2/apps/api/internal/feeds"
)
// clientError is a validation message safe to return to API clients.
type clientError struct {
msg string
}
func (e *clientError) Error() string { return e.msg }
// ClientMsg marks a message as safe to expose in HTTP 4xx responses.
func ClientMsg(msg string) error {
return &clientError{msg: msg}
}
// ClientError reports whether err is a known client-facing marketing error.
// Feed create/update validation from PrepareCampaign is also exposed.
func ClientError(err error) (msg string, ok bool) {
if err == nil {
return "", false
}
var ce *clientError
if errors.As(err, &ce) {
return ce.msg, true
}
return feeds.ClientError(err)
}