diff --git a/add.go b/add.go index 959626c03..d82b586e3 100644 --- a/add.go +++ b/add.go @@ -65,11 +65,11 @@ func CidVersion(version int) AddOpts { func (s *Shell) Add(r io.Reader, options ...AddOpts) (string, error) { fr := files.NewReaderFile(r) slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry("", fr)}) - err := s.loadRemoteVersion() + + fileReader, err := s.newMultiFileReader(slf) if err != nil { return "", err } - fileReader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) var out object rb := s.Request("add") @@ -95,11 +95,10 @@ func (s *Shell) AddLink(target string) (string, error) { link := files.NewLinkFile(target, nil) slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry("", link)}) - err := s.loadRemoteVersion() + reader, err := s.newMultiFileReader(slf) if err != nil { return "", err } - reader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) var out object return out.Hash, s.Request("add").Body(reader).Exec(context.Background(), &out) @@ -118,13 +117,11 @@ func (s *Shell) AddDir(dir string, options ...AddOpts) (string, error) { } slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry(filepath.Base(dir), sf)}) - err = s.loadRemoteVersion() + reader, err := s.newMultiFileReader(slf) if err != nil { return "", err } - reader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) - rb := s.Request("add").Option("recursive", true) for _, option := range options { option(rb) diff --git a/dag.go b/dag.go index 0e482209a..e1ac73418 100644 --- a/dag.go +++ b/dag.go @@ -147,11 +147,5 @@ func (s *Shell) dagToFilesReader(data interface{}) (*files.MultiFileReader, erro fr := files.NewReaderFile(r) slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry("", fr)}) - err := s.loadRemoteVersion() - if err != nil { - return nil, err - } - fileReader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) - - return fileReader, nil + return s.newMultiFileReader(slf) } diff --git a/key.go b/key.go index fdffbf04b..7c496d9ee 100644 --- a/key.go +++ b/key.go @@ -118,11 +118,10 @@ func (keyImportOpt) AllowAnyKeyType(allow bool) KeyImportOpt { func (s *Shell) KeyImport(ctx context.Context, name string, key io.Reader, options ...KeyImportOpt) error { fr := files.NewReaderFile(key) slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry("", fr)}) - err := s.loadRemoteVersion() + fileReader, err := s.newMultiFileReader(slf) if err != nil { return err } - fileReader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) rb := s.Request("key/import", name) for _, opt := range options { diff --git a/mfs.go b/mfs.go index fa68b0fbc..3b0394446 100644 --- a/mfs.go +++ b/mfs.go @@ -338,11 +338,10 @@ func (s *Shell) FilesStat(ctx context.Context, path string, options ...FilesOpt) func (s *Shell) FilesWrite(ctx context.Context, path string, data io.Reader, options ...FilesOpt) error { fr := files.NewReaderFile(data) slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry("", fr)}) - err := s.loadRemoteVersion() + fileReader, err := s.newMultiFileReader(slf) if err != nil { return err } - fileReader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) rb := s.Request("files/write", path) for _, opt := range options { diff --git a/shell.go b/shell.go index 47022cf57..710eed02c 100644 --- a/shell.go +++ b/shell.go @@ -150,6 +150,15 @@ func (s *Shell) loadRemoteVersion() error { return nil } +func (s *Shell) newMultiFileReader(dir files.Directory) (*files.MultiFileReader, error) { + err := s.loadRemoteVersion() + if err != nil { + return nil, err + } + + return files.NewMultiFileReader(dir, true, s.version.LT(encodedAbsolutePathVersion)), nil +} + func (s *Shell) SetTimeout(d time.Duration) { s.httpcli.Timeout = d } @@ -561,11 +570,11 @@ func (s *Shell) PubSubSubscribe(topic string) (*PubSubSubscription, error) { func (s *Shell) PubSubPublish(topic, data string) (err error) { fr := files.NewReaderFile(bytes.NewReader([]byte(data))) slf := files.NewSliceDirectory([]files.DirEntry{files.FileEntry("", fr)}) - err = s.loadRemoteVersion() + + fileReader, err := s.newMultiFileReader(slf) if err != nil { return err } - fileReader := files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)) encoder, _ := mbase.EncoderByName("base64url") resp, err := s.Request("pubsub/pub", encoder.Encode([]byte(topic))). diff --git a/shell_test.go b/shell_test.go index 08a52c404..2726a9de8 100644 --- a/shell_test.go +++ b/shell_test.go @@ -484,7 +484,6 @@ func TestDagImportWithOpts(t *testing.T) { func TestDagImportMultipleCARs(t *testing.T) { is := is.New(t) s := NewShell(shellUrl) - is.Nil(s.loadRemoteVersion()) carFile1, err := os.ReadFile("./tests/cars/1.car") is.Nil(err) @@ -497,8 +496,11 @@ func TestDagImportMultipleCARs(t *testing.T) { files.FileEntry("", files.NewReaderFile(bytes.NewReader(carFile2))), }) + fileReader, err := s.newMultiFileReader(slf) + is.Nil(err) + dagImported, err := s.DagImportWithOpts( - files.NewMultiFileReader(slf, true, s.version.LT(encodedAbsolutePathVersion)), + fileReader, options.Dag.Stats(true), options.Dag.Silent(false), )