errors.go 1004 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package domain
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. type ErrorKind int
  7. const (
  8. NoError ErrorKind = iota
  9. Unimplemented
  10. ShortNotFound
  11. TargetBlockedError
  12. TargetCensoredError
  13. TargetInvalidError
  14. StorageReadError
  15. StorageWriteError
  16. StorageUnspecifiedError
  17. )
  18. var Errors = map[ErrorKind]string{
  19. NoError: "No error",
  20. Unimplemented: "Not yet implemented",
  21. ShortNotFound: "Short URL not defined",
  22. TargetBlockedError: "Target blocked",
  23. TargetCensoredError: "Target unavailable for legal reasons",
  24. TargetInvalidError: "Target invalid",
  25. StorageReadError: "Storage read error",
  26. StorageWriteError: "Storage write error",
  27. StorageUnspecifiedError: "Storage unspecified error",
  28. }
  29. type Error struct {
  30. error
  31. Kind ErrorKind
  32. }
  33. func MakeError(kind ErrorKind, detail string) Error {
  34. var message string
  35. if len(detail) == 0 {
  36. message = Errors[kind]
  37. } else {
  38. message = fmt.Sprintf("%s: %s", Errors[kind], detail)
  39. }
  40. return Error{
  41. Kind: kind,
  42. error: errors.New(message),
  43. }
  44. }