func downloadObject(ptr *Pointer, obj *objectResource, mediafile string, cb CopyCallback) error { reader, size, err := DownloadObject(obj) if reader != nil { defer reader.Close() } // TODO this can be unified with the same code in downloadFile if err != nil { return Errorf(err, "Error downloading %s", mediafile) } if ptr.Size == 0 { ptr.Size = size } mediaFile, err := contentaddressable.NewFile(mediafile) if err != nil { return Errorf(err, "Error opening media file buffer.") } _, err = CopyWithCallback(mediaFile, reader, ptr.Size, cb) if err == nil { err = mediaFile.Accept() } mediaFile.Close() if err != nil { return Errorf(err, "Error buffering media file.") } return nil }
func downloadFile(writer io.Writer, ptr *Pointer, workingfile, mediafile string, cb CopyCallback) error { fmt.Fprintf(os.Stderr, "Downloading %s (%s)\n", workingfile, pb.FormatBytes(ptr.Size)) reader, size, err := Download(filepath.Base(mediafile)) if reader != nil { defer reader.Close() } if err != nil { return Errorf(err, "Error downloading %s.", mediafile) } if ptr.Size == 0 { ptr.Size = size } mediaFile, err := contentaddressable.NewFile(mediafile) if err != nil { return Errorf(err, "Error opening media file buffer.") } _, err = CopyWithCallback(mediaFile, reader, ptr.Size, cb) if err == nil { err = mediaFile.Accept() } mediaFile.Close() if err != nil { return Errorf(err, "Error buffering media file.") } return readLocalFile(writer, ptr, mediafile, workingfile, nil) }