Update fetcher.go

This commit is contained in:
kenneth 2022-08-01 10:44:20 +08:00
parent 812bd24035
commit 9a41f766d2

View File

@ -17,22 +17,22 @@ import (
) )
// Get get请求 // Get get请求
func Get(url string) ([]byte, error) { func Get(url string, timeout int) ([]byte, error) {
client := &http.Client{} client := &http.Client{Timeout: time.Second * time.Duration(timeout)}
req, err := http.NewRequest("GET", url, nil) req, err := http.NewRequest("GET", url, nil)
if err != nil { if err != nil {
return nil, fmt.Errorf("get new request err: %v", err) return nil, fmt.Errorf("[get] new request err: %v", err)
} }
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("[get] client do err: %v", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
res, err := ioutil.ReadAll(resp.Body) res, err := ioutil.ReadAll(resp.Body)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("read response err: %v", err)
} }
return res, nil return res, nil
@ -44,18 +44,18 @@ func GetJson(url string, parameter []byte, timeout int) ([]byte, error) {
byteParameter := bytes.NewBuffer(parameter) byteParameter := bytes.NewBuffer(parameter)
req, err := http.NewRequest("GET", url, byteParameter) req, err := http.NewRequest("GET", url, byteParameter)
if err != nil { if err != nil {
return nil, fmt.Errorf("get json new request err: %v", err) return nil, fmt.Errorf("[getjson] new request err: %v", err)
} }
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return nil, fmt.Errorf("get json request do err: %v", err) return nil, fmt.Errorf("[getjson] client do err: %v", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
res, err := ioutil.ReadAll(resp.Body) res, err := ioutil.ReadAll(resp.Body)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("read response err: %v", err)
} }
return res, nil return res, nil
@ -67,23 +67,23 @@ func PostJson(url, parameter string, timeout int) ([]byte, error) {
byteParameter := bytes.NewBuffer([]byte(parameter)) byteParameter := bytes.NewBuffer([]byte(parameter))
request, err := http.NewRequest("POST", url, byteParameter) request, err := http.NewRequest("POST", url, byteParameter)
if err != nil { if err != nil {
return nil, fmt.Errorf("post json new request err: %v", err) return nil, fmt.Errorf("[postjson] new request err: %v", err)
} }
request.Header.Set("Content-type", "application/json") request.Header.Set("Content-type", "application/json")
response, err := client.Do(request) response, err := client.Do(request)
if err != nil { if err != nil {
return nil, fmt.Errorf("post json request do err: %v", err) return nil, fmt.Errorf("[postjson] client do err: %v", err)
} }
defer response.Body.Close() defer response.Body.Close()
if response.StatusCode != 200 { if response.StatusCode != 200 {
return nil, errors.New("网络请求失败") return nil, errors.New("request not equal 200")
} }
all, err := io.ReadAll(response.Body) all, err := io.ReadAll(response.Body)
if err != nil { if err != nil {
return nil, errors.New("读取网络内容失败") return nil, fmt.Errorf("read response err: %v", err)
} }
return all, nil return all, nil
@ -95,35 +95,35 @@ func PostString(url, parameter string, timeout int) ([]byte, error) {
byteParameter := bytes.NewBuffer([]byte(parameter)) byteParameter := bytes.NewBuffer([]byte(parameter))
request, err := http.NewRequest("POST", url, byteParameter) request, err := http.NewRequest("POST", url, byteParameter)
if err != nil { if err != nil {
return nil, fmt.Errorf("post string new request err: %v", err) return nil, fmt.Errorf("[poststring] new request err: %v", err)
} }
request.Header.Set("Content-type", "application/x-www-form-urlencoded") request.Header.Set("Content-type", "application/x-www-form-urlencoded")
response, err := client.Do(request) response, err := client.Do(request)
if err != nil { if err != nil {
return nil, fmt.Errorf("post string new request err: %v", err) return nil, fmt.Errorf("[poststring] client do err: %v", err)
} }
defer response.Body.Close() defer response.Body.Close()
if response.StatusCode != 200 { if response.StatusCode != 200 {
return nil, errors.New("网络请求失败") return nil, errors.New("request not equal 200")
} }
all, err := ioutil.ReadAll(response.Body) all, err := ioutil.ReadAll(response.Body)
if err != nil { if err != nil {
return nil, errors.New("读取网络内容失败") return nil, fmt.Errorf("read response err: %v", err)
} }
return all, nil return all, nil
} }
func determiningEncoding(r *bufio.Reader) encoding.Encoding { func determiningEncoding(r *bufio.Reader) encoding.Encoding {
bytes, err := r.Peek(1024) b, err := r.Peek(1024)
if err != nil && err != io.EOF { if err != nil && err != io.EOF {
log.Printf("Fetcher error: %v", err) log.Printf("Fetcher error: %v", err)
return unicode.UTF8 return unicode.UTF8
} }
e, _, _ := charset.DetermineEncoding(bytes, "") e, _, _ := charset.DetermineEncoding(b, "")
return e return e
} }