Files
hk4e/pkg/httpclient/http_client.go
2022-11-24 22:47:24 +08:00

76 lines
1.4 KiB
Go

package httpclient
import (
"bytes"
"encoding/json"
"io"
"net/http"
"time"
)
var httpClient http.Client
func init() {
httpClient = http.Client{
Transport: &http.Transport{
DisableKeepAlives: true,
},
Timeout: time.Second * 60,
}
}
func Get[T any](url string, token string) (*T, error) {
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}
if token != "" {
req.Header.Set("Authorization", "Bearer"+" "+token)
}
rsp, err := httpClient.Do(req)
if err != nil {
return nil, err
}
data, err := io.ReadAll(rsp.Body)
_ = rsp.Body.Close()
if err != nil {
return nil, err
}
responseData := new(T)
err = json.Unmarshal(data, responseData)
if err != nil {
return nil, err
}
return responseData, nil
}
func Post[T any](url string, body any, token string) (*T, error) {
reqData, err := json.Marshal(body)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", url, bytes.NewBuffer(reqData))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
if token != "" {
req.Header.Set("Authorization", "Bearer"+" "+token)
}
rsp, err := httpClient.Do(req)
if err != nil {
return nil, err
}
rspData, err := io.ReadAll(rsp.Body)
_ = rsp.Body.Close()
if err != nil {
return nil, err
}
responseData := new(T)
err = json.Unmarshal(rspData, responseData)
if err != nil {
return nil, err
}
return responseData, nil
}