func downloadReleaseAssetFromURL(ctx context.Context, url string) (rc io.ReadCloser, err error) {
client := http.DefaultClient
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
req.Header.Set("Accept", "*/*")
req.Header.Set("Authorization", "Bearer $TOKEN")
req.Header.Set("X-GitHub-Api-Version", "2022-11-28")
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("failed to download a release file from %s: %w", url, err)
}
if resp.StatusCode >= 300 {
resp.Body.Close()
return nil, fmt.Errorf("failed to download a release file from %s: HTTP %d", url, resp.StatusCode)
}
return resp.Body, nil
}