package misc import ( "fmt" "io" "net/http" ) type HeaderType struct { Key string Value string } func Fetch(method string, url string, body io.Reader, headers []HeaderType) ([]byte, error) { req, err := http.NewRequest(method, url, body) Logger.Info().Msg( fmt.Sprintf("'%s' request for '%s'", method, url), ) if err != nil { return []byte{}, fmt.Errorf("error creating request: %v", err) } req.Header.Set("Content-Type", "application/json") if len(headers) > 0 { for _, header := range headers { req.Header.Set(header.Key, header.Value) } } client := &http.Client{} response, err := client.Do(req) if err != nil { return []byte{}, fmt.Errorf("error sending request: %v", err) } defer response.Body.Close() return io.ReadAll(response.Body) }