request.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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) Data() json.Map {
  57. return s.data
  58. }
  59. func (s *Request) FileKeys() []string {
  60. keys := make([]string, len(s.files))
  61. for key, _ := range s.files {
  62. keys[0] = key
  63. }
  64. return keys
  65. }
  66. func (s *Request) File(name string) (io.Reader, bool) {
  67. file, ok := s.files[name]
  68. return file, ok
  69. }
  70. func (s *Request) GenerateToken(data json.Map, expire int64) (string, error) {
  71. return s.generateToken(data, expire)
  72. }
  73. func (s *Request) Root() any {
  74. return s.root
  75. }
  76. func (s *Request) Core() any {
  77. return s.core
  78. }
  79. func (s *Request) ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse {
  80. return &Response{
  81. code: 200,
  82. data: data,
  83. files: files,
  84. }
  85. }
  86. func (s *Request) ResponseError(code int, err IErrorArgs) IResponse {
  87. return &Response{
  88. code: code,
  89. err: err,
  90. }
  91. }