request.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package rest_websocket
  2. import (
  3. "log"
  4. "git.ali33.ru/fcg-xvii/go-tools/json"
  5. "git.ali33.ru/fcg-xvii/rest"
  6. )
  7. /*
  8. type IRequest interface {
  9. Type() RequestType
  10. IsAuth() bool
  11. Command() string
  12. Auth() json.Map
  13. Data() json.Map
  14. FileKeys() []string
  15. File(name string) (IReadCloserLen, bool)
  16. GenerateToken(data json.Map, expire int64) (string, error)
  17. Root() any
  18. Core() any
  19. ResponseSuccess(data json.Map, files map[string]IReadCloserLen) IResponse
  20. ResponseError(code int, err IErrorArgs) IResponse
  21. Close()
  22. }
  23. )*/
  24. type Request struct {
  25. mes *Message
  26. }
  27. func (s *Request) Type() rest.RequestType {
  28. return s.mes.mType
  29. }
  30. func (s *Request) IsAuth() bool {
  31. return s.mes.owner.Auth != nil
  32. }
  33. func (s *Request) Auth() json.Map {
  34. return s.mes.owner.Auth
  35. }
  36. func (s *Request) SetAuth(m json.Map) {
  37. s.mes.owner.Auth = m
  38. }
  39. func (s *Request) Command() string {
  40. return s.mes.command
  41. }
  42. func (s *Request) Data() json.Map {
  43. return s.mes.data
  44. }
  45. func (s *Request) FileKeys() []string {
  46. return s.mes.FileKeys()
  47. }
  48. func (s *Request) File(name string) (rest.IReadCloserLen, bool) {
  49. res, check := s.mes.files[name]
  50. return res, check
  51. }
  52. func (s *Request) GenerateToken(data json.Map, expire int64) (string, error) {
  53. return s.mes.owner.appConf.tokenGenerator(data, expire)
  54. }
  55. func (s *Request) Root() any {
  56. return s.mes.owner
  57. }
  58. func (s *Request) Core() any {
  59. return s.mes.owner.appConf.core
  60. }
  61. func (s *Request) ResponseSuccess(data json.Map, files map[string]rest.IReadCloserLen) rest.IResponse {
  62. if s.mes.mType == rest.RequestTypeEvent {
  63. return &rest.ResponseEmpty{}
  64. }
  65. return &Response{
  66. mes: s.mes,
  67. data: data,
  68. files: files,
  69. }
  70. }
  71. func (s *Request) ResponseError(code int, err rest.IErrorArgs) rest.IResponse {
  72. log.Println("RESP-ERROR", err.Map())
  73. if s.mes.mType == rest.RequestTypeEvent {
  74. return &rest.ResponseEmpty{}
  75. }
  76. return &Response{
  77. mes: s.mes,
  78. err: err,
  79. }
  80. }
  81. func (s *Request) Close() {
  82. s.mes.Close()
  83. }