From 5bf9f5cc0ad2689de4e34d628d8ac3168df5142a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 23 八月 2024 17:41:41 +0800
Subject: [PATCH] 修复编译bug
---
util/http.go | 141 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 140 insertions(+), 1 deletions(-)
diff --git a/util/http.go b/util/http.go
index 25be75e..ff0dcc8 100644
--- a/util/http.go
+++ b/util/http.go
@@ -3,8 +3,12 @@
import (
"bytes"
"encoding/json"
+ "errors"
+ "fmt"
"io"
"net/http"
+ "strconv"
+ "time"
"gat1400Exchange/pkg/logger"
"gat1400Exchange/vo"
@@ -33,7 +37,6 @@
return nil, err
}
- req.Header.Set("Content-Type", "applicaiton/json; charset=UTF-8")
if header != nil {
for k, v := range header {
req.Header.Set(k, v)
@@ -54,3 +57,139 @@
return body, nil
}
+
+func HttpPut(url string, header map[string]string, data []byte) ([]byte, error) {
+ req, err := http.NewRequest(http.MethodPut, url, bytes.NewBuffer(data))
+ if err != nil {
+ return nil, err
+ }
+
+ //req.Header.Set("Content-Type", "applicaiton/json; charset=UTF-8")
+ if header != nil {
+ for k, v := range header {
+ req.Header.Set(k, v)
+ }
+ }
+
+ cli := &http.Client{}
+ resp, err := cli.Do(req)
+ if err != nil {
+ return nil, err
+ }
+
+ cli.CloseIdleConnections()
+ defer resp.Body.Close()
+ body, err := io.ReadAll(resp.Body)
+ if err != nil {
+ return nil, err
+ }
+
+ return body, nil
+}
+
+func HttpGet(url string, header map[string]string) ([]byte, error) {
+ req, err := http.NewRequest(http.MethodGet, url, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ //req.Header.Set("Content-Type", "applicaiton/json; charset=UTF-8")
+ if header != nil {
+ for k, v := range header {
+ req.Header.Set(k, v)
+ }
+ }
+ cli := &http.Client{}
+ resp, err := cli.Do(req)
+ if err != nil {
+ return nil, err
+ }
+
+ defer resp.Body.Close()
+ body, err := io.ReadAll(resp.Body)
+ if err != nil {
+ return nil, err
+ }
+
+ return body, nil
+}
+
+func ImageDownload(downloadUrl string, fb func(length, downLen int64)) ([]byte, error) {
+ var (
+ fSize int64
+ buf = make([]byte, 10*1024)
+ buffer bytes.Buffer
+ written int64
+ )
+
+ request, err := http.NewRequest("GET", downloadUrl, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ //鍒涘缓涓�涓猦ttp client
+ client := new(http.Client)
+ client.Timeout = time.Second * 600 //璁剧疆瓒呮椂鏃堕棿
+
+ // get鏂规硶鑾峰彇璧勬簮
+ resp, err := client.Do(request)
+ if err != nil {
+ return nil, err
+ }
+
+ if resp.StatusCode != 200 {
+ return nil, errors.New(fmt.Sprintf("璇锋眰澶辫触, 鐘舵�佺爜:%d", resp.StatusCode))
+ }
+
+ //璇诲彇鏈嶅姟鍣ㄨ繑鍥炵殑鏂囦欢澶у皬
+ fSize, err = strconv.ParseInt(resp.Header.Get("Content-Length"), 10, 32)
+ if err != nil {
+ return nil, err
+ }
+
+ if resp.Body == nil {
+ return nil, errors.New("body is null")
+ }
+
+ defer resp.Body.Close()
+
+ //涓嬮潰鏄� io.copyBuffer() 鐨勭畝鍖栫増鏈�
+ for {
+ //璇诲彇bytes
+ nr, er := resp.Body.Read(buf)
+ if nr > 0 {
+ //鍐欏叆bytes
+ nw, ew := buffer.Write(buf[0:nr])
+ //鏁版嵁闀垮害澶т簬0
+ if nw > 0 {
+ written += int64(nw)
+ }
+
+ //鍐欏叆鍑洪敊
+ if ew != nil {
+ err = ew
+ break
+ }
+
+ //璇诲彇鏄暟鎹暱搴︿笉绛変簬鍐欏叆鐨勬暟鎹暱搴�
+ if nr != nw {
+ err = io.ErrShortWrite
+ break
+ }
+ }
+
+ if er != nil {
+ if er != io.EOF {
+ err = er
+ }
+ break
+ }
+
+ //娌℃湁閿欒浜嗗揩浣跨敤 callback
+ if fb != nil {
+ fb(fSize, written)
+ }
+ }
+
+ return buffer.Bytes(), err
+}
--
Gitblit v1.8.0