errors.go 1.8 KB

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