huaweicloud-iot-device-sdk-go/util.go

74 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package iot
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"encoding/json"
"strings"
"time"
)
// 时间戳为设备连接平台时的UTC时间格式为YYYYMMDDHH如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。
func timeStamp() string {
strFormatTime := time.Now().Format("2006-01-02 15:04:05")
strFormatTime = strings.ReplaceAll(strFormatTime, "-", "")
strFormatTime = strings.ReplaceAll(strFormatTime, " ", "")
strFormatTime = strFormatTime[0:10]
return strFormatTime
}
// 设备采集数据UTC时间格式yyyyMMdd'T'HHmmss'Z'20161219T114920Z。
//设备上报数据不带该参数或参数格式错误时,则数据上报时间以平台时间为准。
func GetEventTimeStamp() string {
now := time.Now().UTC()
return now.Format("20060102T150405Z")
}
func hmacSha256(data string, secret string) string {
h := hmac.New(sha256.New, []byte(secret))
h.Write([]byte(data))
return hex.EncodeToString(h.Sum(nil))
}
func Interface2JsonString(v interface{}) string {
if v == nil {
return ""
}
byteData, err := json.Marshal(v)
if err != nil {
return ""
}
return string(byteData)
}
func getTopicRequestId(topic string) string {
return strings.Split(topic, "=")[1]
}
func formatTopic(topic, deviceId string) string {
return strings.ReplaceAll(topic, "{device_id}", deviceId)
}
// 根据当前运行的操作系统重新修改文件路径以适配操作系统
func smartFileName(filename string) string {
// Windows操作系统适配
if strings.Contains(OsName(), "windows") {
pathParts := strings.Split(filename, "/")
pathParts[0] = pathParts[0] + ":"
return strings.Join(pathParts, "\\")
}
return filename
}
func CreateMqttClientId(deviceId string) string {
segments := make([]string, 4)
segments[0] = deviceId
segments[1] = "0"
segments[2] = "0"
segments[3] = timeStamp()
return strings.Join(segments, "_")
}