errors.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. func NewErrPrtexpected(field string) IErrorArgs {
  13. return &Error{
  14. name: "PtrExpected",
  15. args: json.Map{
  16. "field": field,
  17. },
  18. }
  19. }
  20. func ErrorFiled(field, message string) IErrorArgs {
  21. return &Error{
  22. name: "ErrField",
  23. args: json.Map{
  24. "field": field,
  25. "message": message,
  26. },
  27. }
  28. }
  29. func NewErrFieldRequired(field string) IErrorArgs {
  30. return &Error{
  31. name: "FieldRequired",
  32. args: json.Map{
  33. "field": field,
  34. },
  35. }
  36. }
  37. func NewErrFieldType(field, expectedType, receivedType, message string, index int) IErrorArgs {
  38. args := json.Map{
  39. "field": field,
  40. "expected": expectedType,
  41. "received": receivedType,
  42. }
  43. if len(message) > 0 {
  44. args["message"] = message
  45. }
  46. if index >= 0 {
  47. args["index"] = index
  48. }
  49. return &Error{
  50. name: "FieldType",
  51. args: args,
  52. }
  53. }
  54. func NewError(name string, args json.Map) IErrorArgs {
  55. return &Error{
  56. name: name,
  57. args: args,
  58. }
  59. }
  60. func NewErrorMessage(name, text string) IErrorArgs {
  61. return &Error{
  62. name: name,
  63. args: json.Map{
  64. "message": text,
  65. },
  66. }
  67. }
  68. type Error struct {
  69. name string
  70. args json.Map
  71. }
  72. func (s *Error) Name() string {
  73. return s.name
  74. }
  75. func (s *Error) Args() json.Map {
  76. return s.args
  77. }
  78. func (s *Error) Error() string {
  79. m := json.Map{
  80. "name": s.name,
  81. "args": s.args,
  82. }
  83. return m.JSONString()
  84. }
  85. func (s *Error) Map() json.Map {
  86. return json.Map{
  87. "name": s.name,
  88. "args": s.args,
  89. }
  90. }