1 Star 0 Fork 0

leminewx / gov2x

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
resp_value.go 2.07 KB
一键复制 编辑 原始数据 按行查看 历史
wenxian 提交于 2024-03-15 16:10 . 0.0.2.0:优化OM协议接口
package om
import (
"encoding/json"
"fmt"
)
// ************************************************** Om.Value.Get.Response **************************************************
type valueGetResponse struct {
*response
dst map[string]string
}
func newValueGetResponse(resp *response) *valueGetResponse {
return &valueGetResponse{
response: resp,
dst: make(map[string]string),
}
}
func (own *valueGetResponse) Validate() error {
if own.ok {
return own.err
}
list, ok := own.src["parameterlist"]
if !ok {
own.err = fmt.Errorf("[Om.Value.Get] response parameterlist not found")
} else {
parameters := list.([]any)
faults := make([]map[string]string, 0, len(parameters))
for _, param := range parameters {
p := make(map[string]string)
for k, v := range param.(map[string]any) {
p[k] = v.(string)
}
if p["fault_code"] != "" {
faults = append(faults, p)
}
own.dst[p["parameter"]] = p["value"]
}
if len(faults) != 0 {
faultBytes, _ := json.Marshal(faults)
own.err = fmt.Errorf("[Om.Value.Get] response has fault parameter: %v", string(faultBytes))
}
}
own.ok = true
return own.err
}
func (own *valueGetResponse) GetData() any {
if !own.ok {
own.Validate()
}
return own.dst
}
// ************************************************** Om.Value.Set.Response **************************************************
type valueSetResponse struct {
*response
}
func newValueSetResponse(resp *response) *valueSetResponse {
return &valueSetResponse{
response: resp,
}
}
func (own *valueSetResponse) Validate() error {
if own.ok {
return own.err
}
stat, ok := own.src["status"]
if !ok {
own.err = fmt.Errorf("[Om.Value.Set] response status not found")
} else if stat.(string) != STATUS_OK {
if fail, ok := own.src["failure"]; !ok {
own.err = fmt.Errorf("[Om.Value.Set] response status error: %v", stat)
} else {
failBytes, _ := json.Marshal(fail)
own.err = fmt.Errorf("[Om.Value.Set] response failure error: %s", string(failBytes))
}
}
own.ok = true
return own.err
}
func (own *valueSetResponse) GetData() any {
return nil
}
Go
1
https://gitee.com/leminewx/gov2x.git
git@gitee.com:leminewx/gov2x.git
leminewx
gov2x
gov2x
a88e0b321ff7

搜索帮助