You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
87 lines
2.3 KiB
package zxsdk
|
|
|
|
import (
|
|
"fmt"
|
|
wallet "wallet_sdk"
|
|
"zxsdk/constant"
|
|
"zxsdk/log"
|
|
model2 "zxsdk/model"
|
|
"zxsdk/tools"
|
|
)
|
|
|
|
func (zx ZxChainClient) KvSave(kvKey, kvValue, operateId string) error {
|
|
if kvKey == "" {
|
|
log.Logger.Errorf("local sdk error: kv key cannot be empty")
|
|
return constant.KVKEY_CANNOT_BE_EMPTY_ERROR
|
|
}
|
|
|
|
if kvValue == "" {
|
|
log.Logger.Errorf("local sdk error: kv value cannot be empty")
|
|
return constant.KVVALUE_CANNOT_BE_EMPTY_ERROR
|
|
}
|
|
|
|
if operateId == "" {
|
|
log.Logger.Errorf("local sdk error: operate id cannot be empty")
|
|
return constant.OPERATE_ID_CANNOT_BE_EMPTY_ERROR
|
|
}
|
|
|
|
hash, _ := wallet.SM3Hash([]byte(kvValue))
|
|
req := &model2.KvSaveReq{
|
|
PublicKey: zx.publicKey,
|
|
KvKey: zx.addr + "_" + kvKey,
|
|
KvValue: kvValue,
|
|
OperateId: operateId,
|
|
}
|
|
|
|
sign, err := wallet.SignByPriKey(zx.privateKey, tools.GetSignData(req.PublicKey, req.KvKey, hash, req.OperateId))
|
|
if err != nil {
|
|
log.Logger.Errorf("local sdk error: signature kvsave param error: %s", err.Error())
|
|
return constant.SIGNATURE_ERROR
|
|
}
|
|
req.Sign = sign
|
|
|
|
trigger := tools.HttpTrigger{
|
|
Client: tools.DefaultHttpClient,
|
|
HeaderDic: zx.makeHeader(),
|
|
}
|
|
err = trigger.HttpPost(constant.ZxChainBaseUrl+"/api/v1/kv/save", req, nil)
|
|
if err != nil {
|
|
log.Logger.TraceErrorf(trigger.HeaderDic[constant.TraceKey], "kv save error: %s", err.Error())
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (zx ZxChainClient) KvQuery(kvKey string, isNeedValue bool) (*model2.KvQueryResp, error) {
|
|
if kvKey == "" {
|
|
log.Logger.Errorf("local sdk error: kv key cannot be empty")
|
|
return nil, constant.KVKEY_CANNOT_BE_EMPTY_ERROR
|
|
}
|
|
|
|
trigger := tools.HttpTrigger{
|
|
Client: tools.DefaultHttpClient,
|
|
HeaderDic: zx.makeHeader(),
|
|
QueryDic: map[string]string{
|
|
"kvKey": zx.addr + "_" + kvKey,
|
|
"isNeedValue": fmt.Sprintf("%v", isNeedValue),
|
|
},
|
|
}
|
|
|
|
resp := &model2.KvQueryResp{}
|
|
err := trigger.HttpGet(constant.ZxChainBaseUrl+"/api/v1/kv/query", resp)
|
|
if err != nil {
|
|
log.Logger.Errorf(trigger.HeaderDic[constant.TraceKey], "kv query error: %s", err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
return resp, nil
|
|
}
|
|
|
|
func (zx ZxChainClient) GetKvCert(txId string) (string, error) {
|
|
if txId == "" {
|
|
log.Logger.Errorf("local sdk error: tx id cannot be empty")
|
|
return "", constant.TXID_CANNOT_BE_EMPTY_ERROR
|
|
}
|
|
return constant.KvCertBaseUrl + txId, nil
|
|
}
|
|
|