From e49473afa5e9c1586c06b971d19fbc51560deef6 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 31 五月 2019 13:13:26 +0800
Subject: [PATCH] add rply mode

---
 cameraApi.go    |   19 ++++++
 reqrepClient.go |   73 ++++++++++++++++++-----
 httpClient.go   |    6 --
 api_test.go     |   27 +++++++-
 4 files changed, 97 insertions(+), 28 deletions(-)

diff --git a/api_test.go b/api_test.go
index aa0a66d..700e322 100644
--- a/api_test.go
+++ b/api_test.go
@@ -1,7 +1,7 @@
 package dbapi
 
 import (
-	"dbapi/protomsg"
+	"basic.com/pubsub/protomsg.git"
 	"fmt"
 	"testing"
 )
@@ -40,10 +40,29 @@
 	fmt.Println(camera)
 }
 
-func TestMangosReqClient(t *testing.T){
-	var client ReqrepApi
+func TestCameraApi_Add(t *testing.T) {
+	var api CameraApi
+	camera := protomsg.Camera{
+		Name:"娴嬭瘯鍟婂晩鍟婂晩鍟婂晩鍟婂晩",
+		Areaid:0,
+	}
+	result := api.CameraAdd(camera)
+	fmt.Println("add result: ",result)
 
-	client.SendRequestAndGetReply("one")
+}
+
+func TestSdkApi_Save(t *testing.T) {
+	var api SdkApi
+	sdk := protomsg.Sdk{
+		SdkName:"娴嬭瘯sdk鍟婂晩鍟婂晩鍟�",
+
+	}
+	result := api.Save(sdk)
+	fmt.Println("add result: ",result)
+}
+
+func TestMangosReqClient(t *testing.T){
+
 }
 
 func TestSdkApi_FindAll(t *testing.T) {
diff --git a/cameraApi.go b/cameraApi.go
index 17bee01..e7ff5e4 100644
--- a/cameraApi.go
+++ b/cameraApi.go
@@ -8,6 +8,24 @@
 
 type CameraApi struct{}
 
+func (api CameraApi) CameraAdd(camera protomsg.Camera) bool {
+	url := BASIC_URL + DATA_URL_PREFIX + "/camera/add"
+	client := NewClient()
+	bodyParam := make(map[string]interface{},0)
+	bodyParam["name"]=camera.Name
+	bodyParam["areaid"] = camera.Areaid
+	body, err := client.DoPostRequest(url,CONTENT_TYPE_JSON,bodyParam,nil,nil)
+	if err != nil {
+		return false
+	}
+
+	var res Result
+	if err = json.Unmarshal(body, &res); err != nil {
+		return false
+	}
+	return res.Success
+}
+
 //閫氳繃cameraId鑾峰彇鎽勫儚鏈轰俊鎭�
 func (api CameraApi) GetCameraById(cameraId string) (result protomsg.Camera, err error) {
 	url := BASIC_URL + DATA_URL_PREFIX + "/camera/show/" + cameraId
@@ -30,7 +48,6 @@
 	return result, err
 }
 
-//鏌ユ壘鎵�鏈夋憚鍍忔満
 func (api CameraApi) FindAll() (cameras []protomsg.Camera) {
 	url := BASIC_URL + DATA_URL_PREFIX + "/camera/showAll"
 	client := NewClient()
diff --git a/httpClient.go b/httpClient.go
index ea273ba..e9564c7 100644
--- a/httpClient.go
+++ b/httpClient.go
@@ -15,7 +15,6 @@
 	var body []byte
 	request, err := http.NewRequest("GET", url, nil)
 	if err != nil {
-		log.Println(err)
 		return body, err
 	}
 	// add params
@@ -28,7 +27,6 @@
 	}
 	//add headers
 	client := &http.Client{}
-	log.Printf("Go GET URL : %s \n", request.URL.String())
 	resp, err := client.Do(request)
 	if err != nil {
 		return body, err
@@ -49,13 +47,11 @@
 		var err error
 		bodyJson, err = json.Marshal(body)
 		if err != nil {
-			log.Println(err)
 			return resultBytes, err
 		}
 	}
 	request, err := http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))
 	if err != nil {
-		log.Println(err)
 		return resultBytes, err
 	}
 	request.Header.Set("Content-type", contentType)
@@ -94,7 +90,6 @@
 		var err error
 		bodyJson, err = json.Marshal(body)
 		if err != nil {
-			log.Println(err)
 			return resultBytes, err
 		}
 	}
@@ -131,7 +126,6 @@
 		var err error
 		bodyJson, err = json.Marshal(body)
 		if err != nil {
-			log.Println(err)
 			return resultBytes, err
 		}
 	}
diff --git a/reqrepClient.go b/reqrepClient.go
index ff88b3b..ebdc397 100644
--- a/reqrepClient.go
+++ b/reqrepClient.go
@@ -2,29 +2,68 @@
 
 import (
 	"basic.com/valib/deliver.git"
-	"basic.com/pubsub/protomsg.git"
 	"encoding/json"
-	"fmt"
+	"errors"
 )
 
-type ReqrepApi struct {
+type ReqRepClient struct {}
 
+var ReqRep_URL = "tcp://192.168.1.11:8002"
+
+//鍒濆鍖杛ply鐨勫湴鍧�
+func InitRplyUrl(url string) {
+	ReqRep_URL = url
 }
 
-const (
-	ReqRep_URL = "tcp://192.168.1.11:8002"
-)
-
-func (api ReqrepApi)SendRequestAndGetReply(reqStr string) string {
-	sender := deliver.NewClient(deliver.Mode(deliver.ReqRep), ReqRep_URL)
-	var sendMsg = protomsg.SdkMessage{}
-	sendMsg.Cid = "kkkk"
-	byteArr, _ := json.Marshal(sendMsg)
-	err := sender.Send(byteArr)
-	if err !=nil {
-		fmt.Println(err)
+func (api ReqRepClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	var destMap map[string]interface{}
+	for idx,val := range params {
+		destMap[idx] = interface{}(val)
 	}
+	reqBody.Params = destMap
+	return doRply(reqBody)
+}
 
-	fmt.Println("SendRequest")
-	return ""
+func (api ReqRepClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	reqBody.Params = body
+	return doRply(reqBody)
+}
+
+func (api ReqRepClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	reqBody.Params = body
+	return doRply(reqBody)
+}
+
+func (api ReqRepClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
+	var reqBody RplyParamBody
+	reqBody.Action = url
+	reqBody.Params = body
+	return doRply(reqBody)
+}
+
+type RplyParamBody struct {
+	Action string	`json:"action"`	//鏍规嵁action鍒ゆ柇鍋氫綍绉嶅搷搴�
+	Params map[string]interface{}	`json:"params"`//鍙傛暟map
+}
+
+func doRply(body RplyParamBody)([]byte,error){
+	sender := deliver.NewClient(deliver.Mode(deliver.ReqRep), ReqRep_URL)
+	bytes,err := json.Marshal(body)
+	if err !=nil {
+		return nil,err
+	}
+	err = sender.Send(bytes)
+	if err !=nil {
+		resMsg, _ := sender.Recv()
+		if resMsg !=nil {
+			return resMsg,nil
+		}
+	}
+	return nil,errors.New("nng no resp")
 }
\ No newline at end of file

--
Gitblit v1.8.0