errors.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package rest
  2. import (
  3. "git.ali33.ru/fcg-xvii/go-tools/json"
  4. )
  5. type IErrorArgs interface {
  6. Error() string
  7. Map() json.Map
  8. }
  9. /////////////////////////////////////////////////////
  10. var (
  11. ErrAlreadyOpened = "AlreadyOpened"
  12. ErrNotOpened = "NotOpened"
  13. ErrKeyNotExists = "KeyNotExists"
  14. ErrKeyInvalidType = "KeyInvalidType"
  15. ErrNotFound = "NotFound"
  16. )
  17. func NewErrPrtexpected(field string) IErrorArgs {
  18. return &Error{
  19. name: "PtrExpected",
  20. args: json.Map{
  21. "field": field,
  22. },
  23. }
  24. }
  25. func NewErrFieldRequired(field string) IErrorArgs {
  26. return &Error{
  27. name: "FieldRequired",
  28. args: json.Map{
  29. "field": field,
  30. },
  31. }
  32. }
  33. func NewErrFieldType(field, expectedType, receivedType, message string, index int) IErrorArgs {
  34. args := json.Map{
  35. "field": field,
  36. "expected": expectedType,
  37. "received": receivedType,
  38. }
  39. if len(message) > 0 {
  40. args["message"] = message
  41. }
  42. if index >= 0 {
  43. args["index"] = index
  44. }
  45. return &Error{
  46. name: "FieldType",
  47. args: args,
  48. }
  49. }
  50. func NewError(name string, args json.Map) IErrorArgs {
  51. return &Error{
  52. name: name,
  53. args: args,
  54. }
  55. }
  56. func NewErrorMessage(name, text string) IErrorArgs {
  57. return &Error{
  58. name: name,
  59. args: json.Map{
  60. "message": text,
  61. },
  62. }
  63. }
  64. type Error struct {
  65. name string
  66. args json.Map
  67. }
  68. func (s *Error) Error() string {
  69. return s.Map().JSONPrettyString()
  70. }
  71. func (s *Error) Map() json.Map {
  72. return json.Map{
  73. "name": s.name,
  74. "args": s.args,
  75. }
  76. }