Files
Valentin Rothberg 1ef66d6d7f podman load: support downloading files
Support downloading files, for instance via
`podman load -i server.com/image.tar`.  The specified URL is downloaded
in the frontend and stored as a temp file that gets passed down to the
backend.

Also vendor in c/common@main to use the new `pkg/download`.

Fixes: #11970
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-11-10 15:43:16 +01:00

32 lines
679 B
Go

package download
import (
"fmt"
"io"
"io/ioutil"
"net/http"
)
// FromURL downloads the specified source to a file in tmpdir (OS defaults if
// empty).
func FromURL(tmpdir, source string) (string, error) {
tmp, err := ioutil.TempFile(tmpdir, "")
if err != nil {
return "", fmt.Errorf("creating temporary download file: %w", err)
}
defer tmp.Close()
response, err := http.Get(source) // nolint:noctx
if err != nil {
return "", fmt.Errorf("downloading %s: %w", source, err)
}
defer response.Body.Close()
_, err = io.Copy(tmp, response.Body)
if err != nil {
return "", fmt.Errorf("copying %s to %s: %w", source, tmp.Name(), err)
}
return tmp.Name(), nil
}