190 lines
3.3 KiB
Go
190 lines
3.3 KiB
Go
package payload
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strconv"
|
|
)
|
|
|
|
/**
|
|
* @Author linya.jj
|
|
* @Date 2023/3/31 09:57
|
|
*/
|
|
|
|
type DataFrameHeader map[string]string
|
|
|
|
func (h DataFrameHeader) Get(key string) string {
|
|
return h[key]
|
|
}
|
|
|
|
func (h DataFrameHeader) Set(key, value string) {
|
|
h[key] = value
|
|
}
|
|
|
|
type DataFrame struct {
|
|
SpecVersion string `json:"specVersion"`
|
|
Type string `json:"type"`
|
|
Time int64 `json:"time"`
|
|
Headers DataFrameHeader `json:"headers"`
|
|
Data string `json:"data"`
|
|
}
|
|
|
|
func (df *DataFrame) Encode() []byte {
|
|
if df == nil {
|
|
return nil
|
|
}
|
|
|
|
data, _ := json.Marshal(df)
|
|
return data
|
|
}
|
|
|
|
func (df *DataFrame) GetTopic() string {
|
|
if df == nil {
|
|
return ""
|
|
}
|
|
|
|
return df.Headers.Get(DataFrameHeaderKTopic)
|
|
}
|
|
|
|
func (df *DataFrame) GetMessageId() string {
|
|
if df == nil {
|
|
return ""
|
|
}
|
|
|
|
return df.Headers.Get(DataFrameHeaderKMessageId)
|
|
}
|
|
|
|
func (df *DataFrame) GetTimestamp() int64 {
|
|
if df == nil {
|
|
return 0
|
|
}
|
|
|
|
strTs := df.Headers.Get(DataFrameHeaderKTime)
|
|
ts, err := strconv.ParseInt(strTs, 10, 64)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return ts
|
|
}
|
|
|
|
func (df *DataFrame) GetHeader(header string) string {
|
|
if df == nil {
|
|
return ""
|
|
}
|
|
|
|
return df.Headers.Get(header)
|
|
}
|
|
|
|
func DecodeDataFrame(rawData []byte) (*DataFrame, error) {
|
|
df := &DataFrame{}
|
|
|
|
err := json.Unmarshal(rawData, df)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return df, nil
|
|
}
|
|
|
|
type DataFrameResponse struct {
|
|
Code int `json:"code"`
|
|
Headers DataFrameHeader `json:"headers"`
|
|
Message string `json:"message"`
|
|
Data string `json:"data"`
|
|
}
|
|
|
|
func NewDataFrameResponse(code int) *DataFrameResponse {
|
|
return &DataFrameResponse{
|
|
Code: code,
|
|
Headers: DataFrameHeader{},
|
|
Message: "",
|
|
Data: "",
|
|
}
|
|
}
|
|
|
|
func NewSuccessDataFrameResponse() *DataFrameResponse {
|
|
return NewDataFrameResponse(DataFrameResponseStatusCodeKOK)
|
|
}
|
|
|
|
func (r *DataFrameResponse) SetHeader(key, value string) {
|
|
if r == nil {
|
|
return
|
|
}
|
|
|
|
r.Headers.Set(key, value)
|
|
}
|
|
|
|
func (r *DataFrameResponse) GetHeader(key string) string {
|
|
if r == nil {
|
|
return ""
|
|
}
|
|
|
|
return r.Headers.Get(key)
|
|
}
|
|
|
|
func (r *DataFrameResponse) SetData(data string) {
|
|
if r == nil {
|
|
return
|
|
}
|
|
|
|
r.Data = data
|
|
}
|
|
|
|
func (r *DataFrameResponse) SetJson(dataModel interface{}) error {
|
|
if r == nil {
|
|
return nil
|
|
}
|
|
|
|
data, err := json.Marshal(dataModel)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
r.Data = string(data)
|
|
return nil
|
|
}
|
|
|
|
func (df *DataFrameResponse) Encode() []byte {
|
|
if df == nil {
|
|
return nil
|
|
}
|
|
|
|
data, _ := json.Marshal(df)
|
|
return data
|
|
}
|
|
|
|
func DecodeDataFrameResponse(rawData []byte) (*DataFrameResponse, error) {
|
|
resp := &DataFrameResponse{}
|
|
|
|
err := json.Unmarshal(rawData, resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return resp, nil
|
|
}
|
|
|
|
func NewDataFrameAckPong(messageId string) *DataFrameResponse {
|
|
return &DataFrameResponse{
|
|
Code: DataFrameResponseStatusCodeKOK,
|
|
Headers: DataFrameHeader{
|
|
DataFrameHeaderKContentType: DataFrameContentTypeKJson,
|
|
DataFrameHeaderKMessageId: messageId,
|
|
},
|
|
Message: "ok",
|
|
Data: "",
|
|
}
|
|
}
|
|
|
|
func NewErrorDataFrameResponse(err error) *DataFrameResponse {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
|
|
return &DataFrameResponse{
|
|
Code: DataFrameResponseStatusCodeKInternalError,
|
|
Headers: DataFrameHeader{},
|
|
Message: err.Error(),
|
|
Data: "",
|
|
}
|
|
}
|