feat(baidu_netdisk): add retry to most operations (close #4863 in #4939)

This commit is contained in:
Sean
2023-08-07 13:44:28 +08:00
committed by GitHub
parent e9cb37122e
commit 7877184bee
17 changed files with 122 additions and 89 deletions

View File

@ -2,6 +2,7 @@ package utils
import (
"fmt"
"github.com/alist-org/alist/v3/internal/errs"
"io"
"mime"
"os"
@ -111,7 +112,7 @@ func CreateNestedFile(path string) (*os.File, error) {
}
// CreateTempFile create temp file from io.ReadCloser, and seek to 0
func CreateTempFile(r io.ReadCloser) (*os.File, error) {
func CreateTempFile(r io.ReadCloser, size int64) (*os.File, error) {
if f, ok := r.(*os.File); ok {
return f, nil
}
@ -119,15 +120,19 @@ func CreateTempFile(r io.ReadCloser) (*os.File, error) {
if err != nil {
return nil, err
}
_, err = io.Copy(f, r)
readBytes, err := io.Copy(f, r)
if err != nil {
_ = os.Remove(f.Name())
return nil, err
return nil, errs.NewErr(err, "CreateTempFile failed")
}
if size != 0 && readBytes != size {
_ = os.Remove(f.Name())
return nil, errs.NewErr(err, "CreateTempFile failed, incoming stream actual size= %s, expect = %s ", readBytes, size)
}
_, err = f.Seek(0, io.SeekStart)
if err != nil {
_ = os.Remove(f.Name())
return nil, err
return nil, errs.NewErr(err, "CreateTempFile failed, can't seek to 0 ")
}
return f, nil
}