data_frame.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package payload
  2. import (
  3. "encoding/json"
  4. "strconv"
  5. )
  6. /**
  7. * @Author linya.jj
  8. * @Date 2023/3/31 09:57
  9. */
  10. type DataFrameHeader map[string]string
  11. func (h DataFrameHeader) Get(key string) string {
  12. return h[key]
  13. }
  14. func (h DataFrameHeader) Set(key, value string) {
  15. h[key] = value
  16. }
  17. type DataFrame struct {
  18. SpecVersion string `json:"specVersion"`
  19. Type string `json:"type"`
  20. Time int64 `json:"time"`
  21. Headers DataFrameHeader `json:"headers"`
  22. Data string `json:"data"`
  23. }
  24. func (df *DataFrame) Encode() []byte {
  25. if df == nil {
  26. return nil
  27. }
  28. data, _ := json.Marshal(df)
  29. return data
  30. }
  31. func (df *DataFrame) GetTopic() string {
  32. if df == nil {
  33. return ""
  34. }
  35. return df.Headers.Get(DataFrameHeaderKTopic)
  36. }
  37. func (df *DataFrame) GetMessageId() string {
  38. if df == nil {
  39. return ""
  40. }
  41. return df.Headers.Get(DataFrameHeaderKMessageId)
  42. }
  43. func (df *DataFrame) GetTimestamp() int64 {
  44. if df == nil {
  45. return 0
  46. }
  47. strTs := df.Headers.Get(DataFrameHeaderKTime)
  48. ts, err := strconv.ParseInt(strTs, 10, 64)
  49. if err != nil {
  50. return 0
  51. }
  52. return ts
  53. }
  54. func (df *DataFrame) GetHeader(header string) string {
  55. if df == nil {
  56. return ""
  57. }
  58. return df.Headers.Get(header)
  59. }
  60. func DecodeDataFrame(rawData []byte) (*DataFrame, error) {
  61. df := &DataFrame{}
  62. err := json.Unmarshal(rawData, df)
  63. if err != nil {
  64. return nil, err
  65. }
  66. return df, nil
  67. }
  68. type DataFrameResponse struct {
  69. Code int `json:"code"`
  70. Headers DataFrameHeader `json:"headers"`
  71. Message string `json:"message"`
  72. Data string `json:"data"`
  73. }
  74. func NewDataFrameResponse(code int) *DataFrameResponse {
  75. return &DataFrameResponse{
  76. Code: code,
  77. Headers: DataFrameHeader{},
  78. Message: "",
  79. Data: "",
  80. }
  81. }
  82. func NewSuccessDataFrameResponse() *DataFrameResponse {
  83. return NewDataFrameResponse(DataFrameResponseStatusCodeKOK)
  84. }
  85. func (r *DataFrameResponse) SetHeader(key, value string) {
  86. if r == nil {
  87. return
  88. }
  89. r.Headers.Set(key, value)
  90. }
  91. func (r *DataFrameResponse) GetHeader(key string) string {
  92. if r == nil {
  93. return ""
  94. }
  95. return r.Headers.Get(key)
  96. }
  97. func (r *DataFrameResponse) SetData(data string) {
  98. if r == nil {
  99. return
  100. }
  101. r.Data = data
  102. }
  103. func (r *DataFrameResponse) SetJson(dataModel interface{}) error {
  104. if r == nil {
  105. return nil
  106. }
  107. data, err := json.Marshal(dataModel)
  108. if err != nil {
  109. return err
  110. }
  111. r.Data = string(data)
  112. return nil
  113. }
  114. func (df *DataFrameResponse) Encode() []byte {
  115. if df == nil {
  116. return nil
  117. }
  118. data, _ := json.Marshal(df)
  119. return data
  120. }
  121. func DecodeDataFrameResponse(rawData []byte) (*DataFrameResponse, error) {
  122. resp := &DataFrameResponse{}
  123. err := json.Unmarshal(rawData, resp)
  124. if err != nil {
  125. return nil, err
  126. }
  127. return resp, nil
  128. }
  129. func NewDataFrameAckPong(messageId string) *DataFrameResponse {
  130. return &DataFrameResponse{
  131. Code: DataFrameResponseStatusCodeKOK,
  132. Headers: DataFrameHeader{
  133. DataFrameHeaderKContentType: DataFrameContentTypeKJson,
  134. DataFrameHeaderKMessageId: messageId,
  135. },
  136. Message: "ok",
  137. Data: "",
  138. }
  139. }
  140. func NewErrorDataFrameResponse(err error) *DataFrameResponse {
  141. if err == nil {
  142. return nil
  143. }
  144. return &DataFrameResponse{
  145. Code: DataFrameResponseStatusCodeKInternalError,
  146. Headers: DataFrameHeader{},
  147. Message: err.Error(),
  148. Data: "",
  149. }
  150. }