error.go 784 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package challenge
  2. import (
  3. "errors"
  4. "fmt"
  5. "net/http"
  6. )
  7. var (
  8. ErrFailed = errors.New("challenge: user failed challenge")
  9. ErrMissingField = errors.New("challenge: missing field")
  10. ErrInvalidFormat = errors.New("challenge: field has invalid format")
  11. )
  12. func NewError(verb, publicReason string, privateReason error) *Error {
  13. return &Error{
  14. Verb: verb,
  15. PublicReason: publicReason,
  16. PrivateReason: privateReason,
  17. StatusCode: http.StatusForbidden,
  18. }
  19. }
  20. type Error struct {
  21. PrivateReason error
  22. Verb string
  23. PublicReason string
  24. StatusCode int
  25. }
  26. func (e *Error) Error() string {
  27. return fmt.Sprintf("challenge: error when processing challenge: %s: %v", e.Verb, e.PrivateReason)
  28. }
  29. func (e *Error) Unwrap() error {
  30. return e.PrivateReason
  31. }