diff --git a/core/commands2/add.go b/core/commands2/add.go index b8774b047..ccb5e86c1 100644 --- a/core/commands2/add.go +++ b/core/commands2/add.go @@ -7,6 +7,7 @@ import ( cmds "github.com/jbenet/go-ipfs/commands" core "github.com/jbenet/go-ipfs/core" + internal "github.com/jbenet/go-ipfs/core/commands2/internal" importer "github.com/jbenet/go-ipfs/importer" dag "github.com/jbenet/go-ipfs/merkledag" ) @@ -34,14 +35,10 @@ var addCmd = &cmds.Command{ // if r, _ := opt.(bool); found && r { // } - readers := make([]io.Reader, 0) - for _, arg := range req.Arguments() { - reader, ok := arg.(io.Reader) - if !ok { - res.SetError(errors.New("cast error"), cmds.ErrNormal) - return - } - readers = append(readers, reader) + readers, err := internal.ToReaders(req.Arguments()) + if err != nil { + res.SetError(err, cmds.ErrNormal) + return } dagnodes, err := add(n, readers) diff --git a/core/commands2/cat.go b/core/commands2/cat.go index 36416f33c..62f67b91d 100644 --- a/core/commands2/cat.go +++ b/core/commands2/cat.go @@ -1,11 +1,11 @@ package commands import ( - "errors" "io" cmds "github.com/jbenet/go-ipfs/commands" core "github.com/jbenet/go-ipfs/core" + "github.com/jbenet/go-ipfs/core/commands2/internal" uio "github.com/jbenet/go-ipfs/unixfs/io" ) @@ -20,19 +20,15 @@ var catCmd = &cmds.Command{ `, Run: func(res cmds.Response, req cmds.Request) { node := req.Context().Node - paths := make([]string, 0, len(req.Arguments())) readers := make([]io.Reader, 0, len(req.Arguments())) - for _, arg := range req.Arguments() { - path, ok := arg.(string) - if !ok { - res.SetError(errors.New("cast error"), cmds.ErrNormal) - return - } - paths = append(paths, path) + paths, err := internal.ToStrings(req.Arguments()) + if err != nil { + res.SetError(err, cmds.ErrNormal) + return } - readers, err := cat(node, paths) + readers, err = cat(node, paths) if err != nil { res.SetError(err, cmds.ErrNormal) return diff --git a/core/commands2/internal/slice_util.go b/core/commands2/internal/slice_util.go new file mode 100644 index 000000000..e2d1ef54a --- /dev/null +++ b/core/commands2/internal/slice_util.go @@ -0,0 +1,32 @@ +package internal + +import ( + "errors" + "io" +) + +var CastErr = errors.New("cast error") + +func ToReaders(slice []interface{}) ([]io.Reader, error) { + readers := make([]io.Reader, 0) + for _, arg := range slice { + reader, ok := arg.(io.Reader) + if !ok { + return nil, CastErr + } + readers = append(readers, reader) + } + return readers, nil +} + +func ToStrings(slice []interface{}) ([]string, error) { + strs := make([]string, 0) + for _, maybe := range slice { + str, ok := maybe.(string) + if !ok { + return nil, CastErr + } + strs = append(strs, str) + } + return strs, nil +} diff --git a/core/commands2/ls.go b/core/commands2/ls.go index 6176c242b..5caa71179 100644 --- a/core/commands2/ls.go +++ b/core/commands2/ls.go @@ -1,10 +1,10 @@ package commands import ( - "errors" "fmt" cmds "github.com/jbenet/go-ipfs/commands" + "github.com/jbenet/go-ipfs/core/commands2/internal" merkledag "github.com/jbenet/go-ipfs/merkledag" ) @@ -30,14 +30,10 @@ var lsCmd = &cmds.Command{ Run: func(res cmds.Response, req cmds.Request) { node := req.Context().Node - paths := make([]string, 0) - for _, arg := range req.Arguments() { - path, ok := arg.(string) - if !ok { - res.SetError(errors.New("cast error"), cmds.ErrNormal) - return - } - paths = append(paths, path) + paths, err := internal.ToStrings(req.Arguments()) + if err != nil { + res.SetError(err, cmds.ErrNormal) + return } dagnodes := make([]*merkledag.Node, 0) diff --git a/core/commands2/pin.go b/core/commands2/pin.go index f16f52f05..5ef9034ea 100644 --- a/core/commands2/pin.go +++ b/core/commands2/pin.go @@ -122,15 +122,3 @@ func pin(n *core.IpfsNode, paths []string, recursive bool) ([]*merkledag.Node, e return dagnodes, nil } - -func toStrings(slice []interface{}) ([]string, error) { - strs := make([]string, 0) - for _, maybe := range slice { - str, ok := maybe.(string) - if !ok { - return nil, errors.New("cast error") - } - strs = append(strs, str) - } - return strs, nil -}