From da4c92f310f5e856fc7a37056616990ceac2e098 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 23 六月 2020 15:13:59 +0800
Subject: [PATCH] rm task,cameraTask,cameraTaskArgs add cameraRule

---
 httpClient.go |  172 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 145 insertions(+), 27 deletions(-)

diff --git a/httpClient.go b/httpClient.go
index de800f7..2cdca21 100644
--- a/httpClient.go
+++ b/httpClient.go
@@ -1,26 +1,39 @@
 package dbapi
 
 import (
+	"bytes"
 	"encoding/json"
-	"fmt"
 	"io/ioutil"
+	"log"
 	"net/http"
 	"strings"
-	"time"
-
+	"github.com/ajg/form"
 )
 
-type DbApi struct{}
+type HttpClient struct{}
 
-const (
-	BASIC_URL = "http://192.168.1.182:8000"
-)
-
-func DoRequest(request *http.Request, contentType string) ([]byte, error) {
+//鍙戣捣GET璇锋眰
+func (httpApi HttpClient) DoGetRequest(url string, params map[string]string, headers map[string]string) ([]byte, error) {
 	var body []byte
-	request.Header.Add("Content-Type", contentType)
-	timeout := time.Duration(5 * time.Second) //瓒呮椂鏃堕棿50ms
-	client := &http.Client{Timeout: timeout}
+	request, err := http.NewRequest("GET", url, nil)
+	if err != nil {
+		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
+	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 body, err
@@ -33,26 +46,131 @@
 	return body, nil
 }
 
-//閫氳繃cameraId鑾峰彇鎽勫儚鏈轰俊鎭�
-func (api DbApi) GetCameraById(cameraId string) (result Camera, err error) {
-	url := BASIC_URL + "/data/api-v/camera/show/" + cameraId
-	request, err := http.NewRequest("GET", url, strings.NewReader(cameraId))
+//鍙戣捣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 request *http.Request
+	var err error
+	if contentType == CONTENT_TYPE_FORM || contentType == CONTENT_TYPE_MULFORM {
+		formData,err := form.EncodeToString(body)
+		if err !=nil {
+			return resultBytes,err
+		}
+		request, err = http.NewRequest("POST",url,strings.NewReader(formData))
+		if err !=nil {
+			return resultBytes,err
+		}
+	} else {
+		var bodyJson []byte
+		if body != nil {
+			var err error
+			bodyJson, err = json.Marshal(body)
+			if err != nil {
+				return resultBytes, err
+			}
+		}
+		request, err = http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))
+		if err != nil {
+			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 result, err
+		return resultBytes, err
 	}
-	
-	body, err := DoRequest(request, "application/json")
+	defer resp.Body.Close()
+	resultBytes, err = ioutil.ReadAll(resp.Body)
 	if err != nil {
-		return result, err
+		return resultBytes, err
 	}
+	return resultBytes, nil
+}
 
-	var res Result
-	if err = json.Unmarshal(body, &res); err != nil {
-		fmt.Println(err)
+//鏋勯�爌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 {
+			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
+}
 
-	bytes, _ := json.Marshal(res.Data)
-	err = json.Unmarshal(bytes, &result)
-
-	return result, err
+//鏋勯�燿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 {
+			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
 }

--
Gitblit v1.8.0