package uniss import ( "bytes" "dashboard/dao/sqldb" "dashboard/models" "dashboard/pkg/swarm" "encoding/json" "fmt" "io" "net/http" "go.uber.org/zap" ) type httpClientHandler struct { swarm *swarm.Swarm[*models.UnisHttpClientRequest] httpC chan *models.UnisHttpClientResponse } func newhttpClientHandle(clients int) *httpClientHandler { res := new(httpClientHandler) res.swarm = swarm.NewSwarm(clients, res.doRequest, swarm.WithLog(zap.NewStdLog(log.Logger))) res.httpC = make(chan *models.UnisHttpClientResponse) return res } func (c *httpClientHandler) curl(msg *models.UnisHttpClientRequest) { c.swarm.Submit(msg) } func (c *httpClientHandler) doRequest(req *models.UnisHttpClientRequest) error { body, err := json.Marshal(req.Msg) fmt.Println(string(body), err) reqs, err := http.NewRequest(req.Methord, req.Url, bytes.NewReader(body)) if err != nil { fmt.Println(err) return err } reqs.Header.Add("Content-type", "application/json;charset=utf-8") client := http.Client{} resp, err := client.Do(reqs) if err != nil { fmt.Println(err) return err } defer resp.Body.Close() msg, err := io.ReadAll(resp.Body) if err != nil { return err } if err := sqldb.ResFulDataStore(req.Methord, req.Url, string(body), string(msg), 0); err != nil { fmt.Println(err) return err } response := &models.UnisHttpClientResponse{ Id: req.Id, Methord: req.Methord, Msg: msg, } c.httpC <- response return nil }