errors.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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, fType, gType, message string) IErrorArgs {
  34. return &Error{
  35. name: "FieldType",
  36. args: json.Map{
  37. "field": field,
  38. "expected": fType,
  39. "received": gType,
  40. "message": message,
  41. },
  42. }
  43. }
  44. func NewError(name string, args json.Map) IErrorArgs {
  45. return &Error{
  46. name: name,
  47. args: args,
  48. }
  49. }
  50. func NewErrorMessage(name, text string) IErrorArgs {
  51. return &Error{
  52. name: name,
  53. args: json.Map{
  54. "message": text,
  55. },
  56. }
  57. }
  58. type Error struct {
  59. name string
  60. args json.Map
  61. }
  62. func (s *Error) Error() string {
  63. return s.Map().JSONPrettyString()
  64. }
  65. func (s *Error) Map() json.Map {
  66. return json.Map{
  67. "name": s.name,
  68. "args": s.args,
  69. }
  70. }