errors.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/imgproxy/imgproxy/v3/ierrors"
  6. )
  7. type (
  8. ResponseWriteError struct{ error }
  9. InvalidURLError string
  10. TooManyRequestsError struct{}
  11. InvalidSecretError struct{}
  12. )
  13. func newResponseWriteError(cause error) *ierrors.Error {
  14. return ierrors.Wrap(
  15. ResponseWriteError{cause},
  16. 1,
  17. ierrors.WithPublicMessage("Failed to write response"),
  18. )
  19. }
  20. func (e ResponseWriteError) Error() string {
  21. return fmt.Sprintf("Failed to write response: %s", e.error)
  22. }
  23. func (e ResponseWriteError) Unwrap() error {
  24. return e.error
  25. }
  26. func newInvalidURLErrorf(status int, format string, args ...interface{}) error {
  27. return ierrors.Wrap(
  28. InvalidURLError(fmt.Sprintf(format, args...)),
  29. 1,
  30. ierrors.WithStatusCode(status),
  31. ierrors.WithPublicMessage("Invalid URL"),
  32. ierrors.WithShouldReport(false),
  33. )
  34. }
  35. func (e InvalidURLError) Error() string { return string(e) }
  36. func newTooManyRequestsError() error {
  37. return ierrors.Wrap(
  38. TooManyRequestsError{},
  39. 1,
  40. ierrors.WithStatusCode(http.StatusTooManyRequests),
  41. ierrors.WithPublicMessage("Too many requests"),
  42. ierrors.WithShouldReport(false),
  43. )
  44. }
  45. func (e TooManyRequestsError) Error() string { return "Too many requests" }
  46. func newInvalidSecretError() error {
  47. return ierrors.Wrap(
  48. InvalidSecretError{},
  49. 1,
  50. ierrors.WithStatusCode(http.StatusForbidden),
  51. ierrors.WithPublicMessage("Forbidden"),
  52. ierrors.WithShouldReport(false),
  53. )
  54. }
  55. func (e InvalidSecretError) Error() string { return "Invalid secret" }