package fetch import ( "bufio" "fmt" "io" "net/http" "time" ) func fetch(rawURL string, timeoutSecs int) (io.Reader, error) { client := http.Client{ Timeout: time.Duration(timeoutSecs) * time.Second, } req, err := http.NewRequest(http.MethodGet, rawURL, nil) if err != nil { return nil, fmt.Errorf("can't create %s request for %s", http.MethodGet, rawURL) } resp, err := client.Do(req) if err != nil { return nil, fmt.Errorf("client failed to perform %s request for %s", http.MethodGet, rawURL) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("status for %s for %s: %s", http.MethodGet, rawURL, resp.Status) } return bufio.NewReader(resp.Body), nil }