errors.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. )
  12. func newResponseWriteError(cause error) *ierrors.Error {
  13. return ierrors.Wrap(
  14. ResponseWriteError{cause},
  15. 1,
  16. ierrors.WithPublicMessage("Failed to write response"),
  17. )
  18. }
  19. func (e ResponseWriteError) Error() string {
  20. return fmt.Sprintf("Failed to write response: %s", e.error)
  21. }
  22. func (e ResponseWriteError) Unwrap() error {
  23. return e.error
  24. }
  25. func newInvalidURLErrorf(status int, format string, args ...interface{}) error {
  26. return ierrors.Wrap(
  27. InvalidURLError(fmt.Sprintf(format, args...)),
  28. 1,
  29. ierrors.WithStatusCode(status),
  30. ierrors.WithPublicMessage("Invalid URL"),
  31. ierrors.WithShouldReport(false),
  32. )
  33. }
  34. func (e InvalidURLError) Error() string { return string(e) }
  35. func newTooManyRequestsError() error {
  36. return ierrors.Wrap(
  37. TooManyRequestsError{},
  38. 1,
  39. ierrors.WithStatusCode(http.StatusTooManyRequests),
  40. ierrors.WithPublicMessage("Too many requests"),
  41. ierrors.WithShouldReport(false),
  42. )
  43. }
  44. func (e TooManyRequestsError) Error() string { return "Too many requests" }