func()

in ecr/fetcher.go [180:207]


func (f *ecrFetcher) fetchLayerHtcat(ctx context.Context, desc ocispec.Descriptor, downloadURL string) (io.ReadCloser, error) {
	log.G(ctx).WithField("url", downloadURL).Debug("ecr.fetcher.layer.htcat")
	parsedURL, err := url.Parse(downloadURL)
	if err != nil {
		log.G(ctx).
			WithError(err).
			WithField("url", downloadURL).
			Error("ecr.fetcher.layer.htcat: failed to parse URL")
		return nil, err
	}
	hc := f.httpClient
	if hc == nil {
		hc = http.DefaultClient
	}
	htc := htcat.New(hc, parsedURL, f.parallelism)
	pr, pw := io.Pipe()
	go func() {
		defer pw.Close()
		_, err := htc.WriteTo(pw)
		if err != nil {
			log.G(ctx).
				WithError(err).
				WithField("url", downloadURL).
				Error("ecr.fetcher.layer.htcat: failed to download layer")
		}
	}()
	return pr, nil
}