sync: Refactor importFile to use a parametrable writer
This commit is contained in:
parent
c5d0616896
commit
c7d1d7ce4c
1 changed files with 21 additions and 12 deletions
|
@ -188,26 +188,35 @@ func GetDestinationFilePath(URI string, filename *string) string {
|
||||||
return path.Join(fic.FilesDir, strings.ToLower(base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(hash[:])), *filename)
|
return path.Join(fic.FilesDir, strings.ToLower(base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(hash[:])), *filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
func importFile(i Importer, URI string, dest string) error {
|
var fileWriter = fileWriterToFS
|
||||||
|
|
||||||
|
func SetWriteFileFunc(writerFunc func(dest string) (io.WriteCloser, error)) {
|
||||||
|
fileWriter = writerFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
func fileWriterToFS(dest string) (io.WriteCloser, error) {
|
||||||
if err := os.MkdirAll(path.Dir(dest), 0751); err != nil {
|
if err := os.MkdirAll(path.Dir(dest), 0751); err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write file
|
return os.Create(dest)
|
||||||
if fdto, err := os.Create(dest); err != nil {
|
}
|
||||||
|
|
||||||
|
func importFile(i Importer, URI string, dest string) error {
|
||||||
|
if fdfrom, closer, err := GetFile(i, URI); err != nil {
|
||||||
|
os.Remove(dest)
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
defer fdto.Close()
|
defer closer()
|
||||||
|
|
||||||
if fdfrom, closer, err := GetFile(i, URI); err != nil {
|
fdto, err := fileWriter(dest)
|
||||||
os.Remove(dest)
|
if err != nil {
|
||||||
return err
|
|
||||||
} else {
|
|
||||||
defer closer()
|
|
||||||
|
|
||||||
_, err = io.Copy(fdto, fdfrom)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer fdto.Close()
|
||||||
|
|
||||||
|
_, err = io.Copy(fdto, fdfrom)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue