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