From a6cfc30060b3dc2d3808a9f4b51f77b2c0000798 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 22 五月 2024 03:06:29 +0800 Subject: [PATCH] 修复设备类型缓存类型错误的bug --- util/http.go | 140 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 139 insertions(+), 1 deletions(-) diff --git a/util/http.go b/util/http.go index 25be75e..2820bd0 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,138 @@ 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 + } + + 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