From e904a0672267d8f1b25fe92d0b08282f8b5b8d18 Mon Sep 17 00:00:00 2001 From: heyujie <516346543@qq.com> Date: 星期五, 26 十一月 2021 14:01:30 +0800 Subject: [PATCH] 增加接口 GetUserProfile --- sbusClient.go | 135 ++++++++++++++++++++++++-------------------- 1 files changed, 74 insertions(+), 61 deletions(-) diff --git a/sbusClient.go b/sbusClient.go index 9deb67c..abfe693 100644 --- a/sbusClient.go +++ b/sbusClient.go @@ -1,15 +1,15 @@ package bhomedbapi import ( - "basic.com/valib/bhomebus.git" + "basic.com/valib/c_bhomebus.git/api/bhsgo" + "basic.com/valib/c_bhomebus.git/proto/source/bhome_msg" "encoding/json" "errors" - "fmt" "strconv" ) type SBusClient struct { - nodes []bhomebus.NetNode + nodes []*bhome_msg.MsgQueryTopicReply_BHNodeAddress } type ProcInfo struct { @@ -18,14 +18,7 @@ Info string `json:"info"` // 杩涚▼鐨勬弿杩颁俊鎭紝鐢ㄤ簬鍖哄垎鍚屼竴杩涚▼鍚嶇О涓嬪涓繘绋� } -type MsgInfo struct { - SrcProc ProcInfo `json:"srcProc"` // 婧愯繘绋嬪熀鏈俊鎭� - MsgType string `json:"msgType"` // 鏁版嵁绫诲瀷锛屽彲涓鸿姹傘�佸彂甯冦�佽闃呫�佸簲绛旂瓑 - Topic string `json:"topic"` //璇锋眰涓婚 - Body []byte `json:"body"` //璇锋眰鍐呭鎴栬�呭弽棣堢粨鏋� -} - -type request struct { +type Request struct { Path string `json:"path"` Method string `json:"method"` ContentType string `json:"contentType"` @@ -36,26 +29,37 @@ Body []byte `json:"body"` } -func (sc SBusClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) { - if sc.nodes == nil || len(sc.nodes) == 0 { - return nil, errors.New("invalid netNodes") - } +type reply struct { + Success bool `json:"success"` + Msg string `json:"msg"` + Data interface{} `json:"data"` +} - req := request { +func (sc SBusClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) { + + req := Request{ Path: url, Method: "GET", ContentType: CONTENT_TYPE_JSON, } fillParam(&req, headers, params, nil) - return doReq(req, sc.nodes) + rb, err := json.Marshal(req) + if err !=nil { + return nil,err + } + rMsg := bhome_msg.MsgRequestTopic{ + Topic: []byte(req.Path), + Data: rb, + } + + return busReq(&rMsg, sc.nodes) + //return doReq(req, sc.nodes) } func (sc SBusClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) { - if sc.nodes == nil || len(sc.nodes) == 0 { - return nil, errors.New("invalid port") - } - req := request { + + req := Request{ Path: url, Method: "POST", ContentType: contentType, @@ -64,6 +68,7 @@ if contentType == CONTENT_TYPE_FORM || contentType == CONTENT_TYPE_MULFORM { if body != nil { req.PostFormMap = make(map[string][]string) + req.FormMap = map[string][]string{} for k,v := range body { switch v.(type) { case string: @@ -90,38 +95,61 @@ } } - return doReq(req, sc.nodes) + rb, err := json.Marshal(req) + if err !=nil { + return nil,err + } + rMsg := bhome_msg.MsgRequestTopic{ + Topic: []byte(req.Path), + Data: rb, + } + + return busReq(&rMsg, sc.nodes) } func (sc SBusClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) { - if sc.nodes == nil || len(sc.nodes) == 0 { - return nil, errors.New("invalid port") - } - req := request { + + req := Request{ Path: url, Method: "PUT", ContentType: contentType, } fillParam(&req, headers, nil, body) - return doReq(req, sc.nodes) + rb, err := json.Marshal(req) + if err !=nil { + return nil,err + } + rMsg := bhome_msg.MsgRequestTopic{ + Topic: []byte(req.Path), + Data: rb, + } + + return busReq(&rMsg, sc.nodes) } func (sc SBusClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) { - if sc.nodes == nil || len(sc.nodes) == 0 { - return nil, errors.New("invalid port") - } - req := request { + + req := Request{ Path: url, Method: "DELETE", ContentType: contentType, } fillParam(&req, headers, nil, body) - return doReq(req, sc.nodes) + rb, err := json.Marshal(req) + if err !=nil { + return nil,err + } + rMsg := bhome_msg.MsgRequestTopic{ + Topic: []byte(req.Path), + Data: rb, + } + + return busReq(&rMsg, sc.nodes) } -func fillParam(req *request,headers map[string]string, params map[string]string, body map[string]interface{}) { +func fillParam(req *Request,headers map[string]string, params map[string]string, body map[string]interface{}) { headerMap := make(map[string][]string) queryMap := make(map[string][]string) if headers != nil { @@ -142,37 +170,22 @@ } else { req.Body = b } - } -func doReq(req request, nodes []bhomebus.NetNode) ([]byte,error) { - rb, err := json.Marshal(req) - if err !=nil { - return nil,err +/** +* 鏂扮増bhs鐩存帴鍙戣捣璇锋眰锛屼笉浼氫骇鐢熷叡浜唴瀛樻硠婕忕殑闂锛� +*/ +func doReq(req *bhome_msg.MsgRequestTopic, destArr []bhome_msg.BHAddress) ([]byte, error) { + dest := bhome_msg.BHAddress{} + if destArr != nil && len(destArr) > 0 { + dest = destArr[0] } - rMsg := MsgInfo{ - Topic: req.Path, - Body: rb, - } - data, err := json.Marshal(rMsg) - if err != nil { - return nil, err - } - s := bhomebus.OpenSocket() - defer s.Close() - var ret []bhomebus.Mesg - if n := s.SendandrecvTimeout(nodes, data, &ret, 5000);n == 0 { //n==0琛ㄧず娌℃湁璇锋眰鎴愬姛 - return nil, fmt.Errorf("doReq s.SendandrecvTimeout result n:%d", n) + pid := "" + r := bhome_msg.MsgRequestTopicReply{} + if bhsgo.Request(&dest, req, &pid, &r, 5000) { + return r.Data, nil } else { - if len(ret) > 0 { - var retMsg MsgInfo - err = json.Unmarshal(ret[0].Data, &retMsg) - if err != nil { - logPrint("doReq unmarshal to MsgInfo err:", err) - return nil, err - } - return retMsg.Body, nil - } - return nil, fmt.Errorf("no any response") + logPrint("bhsgo.Request request err:", r.Errmsg) + return nil, errors.New("bhsgo.Request return false") } } \ No newline at end of file -- Gitblit v1.8.0