1 Star 0 Fork 0

cluby / topsdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
util.go 2.40 KB
一键复制 编辑 原始数据 按行查看 历史
Mandarava 提交于 2022-05-19 10:52 . init
package util
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"sort"
"strings"
"time"
)
type LocalTime time.Time
const (
TimeFormat = "2006-01-02 15:04:05"
)
func (t *LocalTime) UnmarshalJSON(data []byte) (err error) {
// 空值不进行解析
if len(data) == 2 {
*t = LocalTime(time.Time{})
return
}
now, err := time.ParseInLocation(`"`+TimeFormat+`"`, string(data), time.Local)
*t = LocalTime(now)
return
}
func (t LocalTime) MarshalJSON() ([]byte, error) {
b := make([]byte, 0, len(TimeFormat)+2)
b = append(b, '"')
b = time.Time(t).AppendFormat(b, TimeFormat)
b = append(b, '"')
return b, nil
}
func (t LocalTime) String() string {
return time.Time(t).Format(TimeFormat)
}
func UnmarshalJSON(data []byte,v interface{})(err error){
return json.Unmarshal(data, v)
}
func ConvertStructList(data interface{}) string {
if(data == nil) {
return "[]"
}
jsonStr, _ := json.Marshal(data)
return string(jsonStr)
}
func ConvertStruct(data interface{}) string {
if(data == nil) {
return "{}"
}
jsonStr, _ := json.Marshal(data)
return string(jsonStr)
}
func ConvertBasicList(data interface{}) string {
if(data == nil) {
return "[]"
}
return strings.Replace(strings.Trim(fmt.Sprint(data), "[]"), " ", ",", -1)
}
func HandleJsonResponse(jsonStr string,v interface{})(err error) {
if(strings.Contains(jsonStr[0:20],"error_response")){
err := &TopApiRequestError{}
jsonStr = jsonStr[18:len(jsonStr)-1]
err2 := json.Unmarshal([]byte(jsonStr), err)
if err2 != nil {
return err2
}
return err
}
return json.Unmarshal([]byte(jsonStr), v)
}
func GetSign(publicParam map[string]interface{},data map[string]interface{},secret string) string {
var allParamMap = make(map[string]interface{})
for k,v := range data {
allParamMap[k] = v
}
for k,v := range publicParam {
allParamMap[k] = v
}
var keyList []string
for k := range allParamMap {
keyList = append(keyList, k)
}
sort.Strings(keyList)
var signStr = ""
for _ , key := range keyList {
value := allParamMap[key]
signStr = signStr + fmt.Sprintf("%v%v", key, value)
//if(value != ""){
// signStr = signStr + fmt.Sprintf("%v%v", key, value)
//}
}
fmt.Println(signStr)
sign := strings.ToUpper(hmacSha256(signStr,secret))
return sign
}
func hmacSha256(data string, secret string) string {
h := hmac.New(sha256.New, []byte(secret))
h.Write([]byte(data))
return hex.EncodeToString(h.Sum(nil))
}
Go
1
https://gitee.com/cluby/topsdk.git
git@gitee.com:cluby/topsdk.git
cluby
topsdk
topsdk
v1.0.5

搜索帮助