package util

import (
	"encoding/json"
	"escalation/prom/model"
	"io/ioutil"
	"log"
	"net/http"
	"time"
)

var client *http.Client

func GetHttpClient() *http.Client {
	if client == nil {
		client = &http.Client{Timeout: 600 * time.Second}
	}
	return client
}

func SetHttpClient(){
	client = &http.Client{Timeout: 600 * time.Second}
}

// help functions to receive HTTP response.
func SendAndHandleHTTPRes[T model.HttpRes](req *http.Request, struct_res *T) {
	req.Close = true
	res, err := GetHttpClient().Do(req)
	if err != nil {
		log.Println("req err, ", err)
		client = &http.Client{Timeout: 600 * time.Second}
		SendAndHandleHTTPRes(req, struct_res)
		return
	}

	defer res.Body.Close() //修改信息
	res_body, _ := ioutil.ReadAll(res.Body)

	err2 := json.Unmarshal(res_body, struct_res)
	if err2 != nil {
		log.Println("error when pulling data:", err2)
	}
}
