From 39efbe0a4b7da36555250439ebea6f242374d339 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@qq.com>
Date: 星期二, 14 五月 2019 14:02:20 +0800
Subject: [PATCH] NewClient use factory

---
 areaApi_test.go  |   34 ++++++++
 util.go          |   15 +++
 go.mod           |    3 
 client.go        |   20 +++++
 clientFactory.go |    6 +
 httpClient.go    |  161 ++++++++++++++++++++++++++++++++++++++++
 6 files changed, 239 insertions(+), 0 deletions(-)

diff --git a/areaApi_test.go b/areaApi_test.go
new file mode 100644
index 0000000..5a3274f
--- /dev/null
+++ b/areaApi_test.go
@@ -0,0 +1,34 @@
+package dbapi
+
+import (
+	"fmt"
+	"testing"
+)
+
+func TestGetLocalCameraTree(t *testing.T) {
+	var api AreaApi
+	body := api.GetLocalCameraTree(0)
+	fmt.Println(body)
+}
+
+func TestAreaAdd(t *testing.T) {
+	var api AreaApi
+	var area = Area{
+		Parentid: 0,
+		Name:     "鍝堝搱鍝�",
+	}
+
+	flag := api.AreaAdd(area)
+	fmt.Println(flag)
+}
+
+func TestAreaUpdate(t *testing.T) {
+	var api AreaApi
+	var area = Area{
+		Id:       1,
+		Name:     "鍖哄煙鏇存柊娴嬭瘯",
+		Parentid: 0,
+	}
+	flag := api.AreaUpdate(area)
+	fmt.Println(flag)
+}
diff --git a/client.go b/client.go
new file mode 100644
index 0000000..fc23c07
--- /dev/null
+++ b/client.go
@@ -0,0 +1,20 @@
+package dbapi
+
+type Client interface {
+	//GET
+	DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error)
+	//POST
+	DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error)
+	//PUT
+	DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error)
+	//DELETE
+	DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error)
+}
+
+const (
+	BASIC_URL            = "http://192.168.1.115:8000"
+	DATA_URL_PREFIX      = "/data/api-v"
+	CONTENT_TYPE_FORM    = "application/x-www-form-urlencoded"
+	CONTENT_TYPE_MULFORM = "multipart/form-data"
+	CONTENT_TYPE_JSON    = "application/json"
+)
diff --git a/clientFactory.go b/clientFactory.go
new file mode 100644
index 0000000..0bb07d3
--- /dev/null
+++ b/clientFactory.go
@@ -0,0 +1,6 @@
+package dbapi
+
+//Factory new client
+func NewClient() Client {
+	return &HttpClient{}
+}
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..cc2d2a4
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module dbapi
+
+go 1.12
diff --git a/httpClient.go b/httpClient.go
new file mode 100644
index 0000000..ea273ba
--- /dev/null
+++ b/httpClient.go
@@ -0,0 +1,161 @@
+package dbapi
+
+import (
+	"bytes"
+	"encoding/json"
+	"io/ioutil"
+	"log"
+	"net/http"
+)
+
+type HttpClient struct{}
+
+//鍙戣捣GET璇锋眰
+func (httpApi HttpClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
+	var body []byte
+	request, err := http.NewRequest("GET", url, nil)
+	if err != nil {
+		log.Println(err)
+		return body, err
+	}
+	// add params
+	query := request.URL.Query()
+	if params != nil {
+		for key, val := range params {
+			query.Add(key, val)
+		}
+		request.URL.RawQuery = query.Encode()
+	}
+	//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
+	}
+	defer resp.Body.Close()
+	body, err = ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return body, err
+	}
+	return body, nil
+}
+
+//鍙戣捣POST璇锋眰
+func (httpApi HttpClient) DoPostRequest(url string, contentType string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {
+	var resultBytes []byte
+	var bodyJson []byte
+	if body != nil {
+		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)
+	//add params
+	q := request.URL.Query()
+	if params != nil {
+		for key, val := range params {
+			q.Add(key, val)
+		}
+		request.URL.RawQuery = q.Encode()
+	}
+	// add headers
+	if headers != nil {
+		for key, val := range headers {
+			request.Header.Add(key, val)
+		}
+	}
+	client := &http.Client{}
+	resp, err := client.Do(request)
+	if err != nil {
+		return resultBytes, err
+	}
+	defer resp.Body.Close()
+	resultBytes, err = ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return resultBytes, err
+	}
+	return resultBytes, nil
+}
+
+//鏋勯�爌ut璇锋眰
+func (httpApi HttpClient) DoPutRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
+	var resultBytes []byte
+	var bodyJson []byte
+	if body != nil {
+		var err error
+		bodyJson, err = json.Marshal(body)
+		if err != nil {
+			log.Println(err)
+			return resultBytes, err
+		}
+	}
+	request, err := http.NewRequest("PUT", url, bytes.NewBuffer(bodyJson))
+	if err != nil {
+		log.Println(err)
+		return resultBytes, err
+	}
+	request.Header.Set("Content-type", contentType)
+	// add headers
+	if headers != nil {
+		for key, val := range headers {
+			request.Header.Add(key, val)
+		}
+	}
+	client := &http.Client{}
+	resp, err := client.Do(request)
+	if err != nil {
+		return resultBytes, err
+	}
+	defer resp.Body.Close()
+	resultBytes, err = ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return resultBytes, err
+	}
+	return resultBytes, nil
+}
+
+//鏋勯�燿elete璇锋眰
+func (httpApi HttpClient) DoDeleteRequest(url string, contentType string, body map[string]interface{}, headers map[string]string) ([]byte, error) {
+	var resultBytes []byte
+	var bodyJson []byte
+	if body != nil {
+		var err error
+		bodyJson, err = json.Marshal(body)
+		if err != nil {
+			log.Println(err)
+			return resultBytes, err
+		}
+	}
+	request, err := http.NewRequest("DELETE", url, bytes.NewBuffer(bodyJson))
+	if err != nil {
+		log.Println(err)
+		return resultBytes, err
+	}
+	request.Header.Set("Content-type", contentType)
+	// add headers
+	if headers != nil {
+		for key, val := range headers {
+			request.Header.Add(key, val)
+		}
+	}
+	client := &http.Client{}
+	resp, err := client.Do(request)
+	if err != nil {
+		return resultBytes, err
+	}
+	defer resp.Body.Close()
+	resultBytes, err = ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return resultBytes, err
+	}
+	return resultBytes, nil
+}
diff --git a/util.go b/util.go
new file mode 100644
index 0000000..7ae676f
--- /dev/null
+++ b/util.go
@@ -0,0 +1,15 @@
+package dbapi
+
+import "reflect"
+
+//struct杞琺ap
+func Struct2Map(obj interface{}) map[string]interface{} {
+	t := reflect.TypeOf(obj)
+	v := reflect.ValueOf(obj)
+
+	var data = make(map[string]interface{})
+	for i := 0; i < t.NumField(); i++ {
+		data[t.Field(i).Name] = v.Field(i).Interface()
+	}
+	return data
+}

--
Gitblit v1.8.0