package api import ( "bytes" "encoding/json" "github.com/labstack/echo/v4" "io" "net/http" ) func PostRequest(url string, model any, header http.Header, c echo.Context) ([]byte, error, *http.Response) { uJson, err := json.Marshal(model) if err != nil { return nil, err, nil } client := http.Client{} req, err := http.NewRequest("POST", url, bytes.NewReader(uJson)) req.Header = header req.Header.Set("Content-Type", "application/json") debug, err := json.Marshal(req) if err != nil { c.Logger().Debug("Request---") c.Logger().Debug(string(debug)) } resp, err := client.Do(req) if err != nil { return nil, err, nil } data, err := io.ReadAll(resp.Body) if err != nil { return nil, err, nil } debug, err = json.Marshal(resp) if err != nil { c.Logger().Debug("Response---") c.Logger().Debug(string(debug)) } return data, nil, resp } func GetRequest(url string, header http.Header, c echo.Context, args ...string) ([]byte, error, *http.Response) { client := http.Client{} req, err := http.NewRequest("GET", url, nil) if len(args) > 0 { req.URL.RawQuery = args[0] } req.Header = header req.Header.Set("Content-Type", "application/json") debug, err := json.Marshal(req) if err != nil { c.Logger().Debug("Request---") c.Logger().Debug(string(debug)) } resp, err := client.Do(req) if err != nil { return nil, err, nil } data, err := io.ReadAll(resp.Body) if err != nil { return nil, err, nil } if err != nil { c.Logger().Debug("Response---") c.Logger().Debug(string(debug)) } return data, nil, resp } func PatchRequest(url string, model any, header http.Header) ([]byte, error) { uJson, err := json.Marshal(model) if err != nil { return nil, err } client := http.Client{} req, err := http.NewRequest("PATCH", url, bytes.NewReader(uJson)) req.Header = header req.Header.Set("Content-Type", "application/json") resp, err := client.Do(req) if err != nil { return nil, err } data, err := io.ReadAll(resp.Body) if err != nil { return nil, err } return data, nil } func DeleteRequest(url string, header http.Header) ([]byte, error) { client := http.Client{} req, err := http.NewRequest("DELETE", url, nil) req.Header = header req.Header.Set("Content-Type", "application/json") resp, err := client.Do(req) if err != nil { return nil, err } data, err := io.ReadAll(resp.Body) if err != nil { return nil, err } return data, nil }