Merge pull request #630 from filcloud/fix/583-redownload-param-file

continue download param file
This commit is contained in:
Łukasz Magiera 2019-11-19 14:30:03 +01:00 committed by GitHub
commit 32b80f79e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,8 +5,10 @@ import (
"encoding/json"
"io"
"net/http"
"net/url"
"os"
"path/filepath"
"strconv"
"strings"
"sync"
@ -85,7 +87,16 @@ func (ft *fetch) maybeFetchAsync(name string, info paramFile) {
defer ft.fetchLk.Unlock()
if err := doFetch(path, info); err != nil {
ft.errs = append(ft.errs, xerrors.Errorf("fetching file %s: %w", path, err))
ft.errs = append(ft.errs, xerrors.Errorf("fetching file %s failed: %w", path, err))
return
}
err = ft.checkFile(path, info)
if err != nil {
ft.errs = append(ft.errs, xerrors.Errorf("checking file %s failed: %w", path, err))
err := os.Remove(path)
if err != nil {
ft.errs = append(ft.errs, xerrors.Errorf("remove file %s failed: %w", path, err))
}
}
}()
}
@ -129,18 +140,35 @@ func doFetch(out string, info paramFile) error {
}
log.Infof("Fetching %s from %s", out, gw)
resp, err := http.Get(gw + info.Cid)
if err != nil {
return err
}
defer resp.Body.Close()
outf, err := os.Create(out)
outf, err := os.OpenFile(out, os.O_RDWR|os.O_CREATE|os.O_APPEND,0666)
if err != nil {
return err
}
defer outf.Close()
fStat, err := outf.Stat()
if err != nil {
return err
}
header := http.Header{}
header.Set("Range", "bytes=" + strconv.FormatInt(fStat.Size(), 10) + "-")
url, err := url.Parse(gw + info.Cid)
if err != nil {
return err
}
req := http.Request{
Method: "GET",
URL: url,
Header: header,
Close: true,
}
resp, err := http.DefaultClient.Do(&req)
if err != nil {
return err
}
defer resp.Body.Close()
bar := pb.New64(resp.ContentLength)
bar.Units = pb.U_BYTES
bar.ShowSpeed = true