request.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package rest
  2. import (
  3. "io"
  4. "git.ali33.ru/fcg-xvii/go-tools/json"
  5. )
  6. type IRequest interface {
  7. IsAuth() bool
  8. Command() string
  9. Auth() json.Map
  10. Data() json.Map
  11. FileKeys() []string
  12. File(name string) (io.Reader, bool)
  13. GenerateToken(data json.Map, expire int64) (string, error)
  14. Root() any
  15. Core() any
  16. ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse
  17. ResponseError(code int, err IErrorArgs) IResponse
  18. }
  19. type Request struct {
  20. auth json.Map `json:"auth"`
  21. command string `json:"command"`
  22. data json.Map `json:"data"`
  23. fileKeys []string `json:"file_keys"`
  24. files map[string]io.Reader
  25. core any
  26. root any
  27. generateToken func(data json.Map, expire int64) (string, error)
  28. //Response func(data json.Map, files map[string]io.ReadCloser) IResponse
  29. }
  30. // сеттеры
  31. func (s *Request) SetAuth(auth json.Map) {
  32. s.auth = auth
  33. }
  34. func (s *Request) SetCommand(command string) {
  35. s.command = command
  36. }
  37. func (s *Request) SetData(data json.Map) {
  38. s.data = data
  39. }
  40. func (s *Request) SetFiles(files map[string]io.Reader) {
  41. s.files = files
  42. }
  43. func (s *Request) SetRoot(root any) {
  44. s.root = root
  45. }
  46. func (s *Request) SetCore(core any) {
  47. s.core = core
  48. }
  49. func (s *Request) SetGenerateToken(generateToken func(data json.Map, expire int64) (string, error)) {
  50. s.generateToken = generateToken
  51. }
  52. // методы интерфейса
  53. func (s *Request) IsAuth() bool {
  54. return s.auth != nil
  55. }
  56. func (s *Request) Command() string {
  57. return s.command
  58. }
  59. func (s *Request) Auth() json.Map {
  60. return s.auth
  61. }
  62. func (s *Request) Data() json.Map {
  63. return s.data
  64. }
  65. func (s *Request) FileKeys() []string {
  66. keys := make([]string, len(s.files))
  67. for key, _ := range s.files {
  68. keys[0] = key
  69. }
  70. return keys
  71. }
  72. func (s *Request) File(name string) (io.Reader, bool) {
  73. file, ok := s.files[name]
  74. return file, ok
  75. }
  76. func (s *Request) GenerateToken(data json.Map, expire int64) (string, error) {
  77. return s.generateToken(data, expire)
  78. }
  79. func (s *Request) Root() any {
  80. return s.root
  81. }
  82. func (s *Request) Core() any {
  83. return s.core
  84. }
  85. func (s *Request) ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse {
  86. return &Response{
  87. code: 200,
  88. data: data,
  89. files: files,
  90. }
  91. }
  92. func (s *Request) ResponseError(code int, err IErrorArgs) IResponse {
  93. return &Response{
  94. code: code,
  95. err: err,
  96. }
  97. }