request.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse
  16. ResponseError(code int, err IErrorArgs) IResponse
  17. }
  18. type Request struct {
  19. auth json.Map `json:"auth"`
  20. command string `json:"command"`
  21. data json.Map `json:"data"`
  22. fileKeys []string `json:"file_keys"`
  23. files map[string]io.Reader
  24. root any
  25. generateToken func(data json.Map, expire int64) (string, error)
  26. //Response func(data json.Map, files map[string]io.ReadCloser) IResponse
  27. }
  28. // сеттеры
  29. func (s *Request) SetAuth(auth json.Map) {
  30. s.auth = auth
  31. }
  32. func (s *Request) SetCommand(command string) {
  33. s.command = command
  34. }
  35. func (s *Request) SetData(data json.Map) {
  36. s.data = data
  37. }
  38. func (s *Request) SetFiles(files map[string]io.Reader) {
  39. s.files = files
  40. }
  41. func (s *Request) SetRoot(root any) {
  42. s.root = root
  43. }
  44. func (s *Request) SetGenerateToken(generateToken func(data json.Map, expire int64) (string, error)) {
  45. s.generateToken = generateToken
  46. }
  47. // методы интерфейса
  48. func (s *Request) IsAuth() bool {
  49. return s.auth != nil
  50. }
  51. func (s *Request) Data() json.Map {
  52. return s.data
  53. }
  54. func (s *Request) FileKeys() []string {
  55. keys := make([]string, len(s.files))
  56. for key, _ := range s.files {
  57. keys[0] = key
  58. }
  59. return keys
  60. }
  61. func (s *Request) File(name string) (io.Reader, bool) {
  62. file, ok := s.files[name]
  63. return file, ok
  64. }
  65. func (s *Request) GenerateToken(data json.Map, expire int64) (string, error) {
  66. return s.generateToken(data, expire)
  67. }
  68. func (s *Request) Root() any {
  69. return s.root
  70. }
  71. func (s *Request) ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse {
  72. return &Response{
  73. code: 200,
  74. data: data,
  75. files: files,
  76. }
  77. }
  78. func (s *Request) ResponseError(code int, err IErrorArgs) IResponse {
  79. return &Response{
  80. code: code,
  81. err: err,
  82. }
  83. }