From 2a15fe8e1eba236ef398d768661a0fb82fb1c41e Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Tue, 4 Nov 2014 02:42:45 -0800 Subject: [PATCH] refactor(commands2/cat) readability --- core/commands2/cat.go | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/core/commands2/cat.go b/core/commands2/cat.go index c190ddd6d..f7378ed89 100644 --- a/core/commands2/cat.go +++ b/core/commands2/cat.go @@ -1,9 +1,11 @@ package commands import ( + "errors" "io" cmds "github.com/jbenet/go-ipfs/commands" + core "github.com/jbenet/go-ipfs/core" uio "github.com/jbenet/go-ipfs/unixfs/io" ) @@ -14,26 +16,41 @@ var catCmd = &cmds.Command{ Help: "TODO", 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 := arg.(string) - dagnode, err := node.Resolver.ResolvePath(path) - if err != nil { - res.SetError(err, cmds.ErrNormal) + path, ok := arg.(string) + if !ok { + res.SetError(errors.New("cast error"), cmds.ErrNormal) return } + paths = append(paths, path) + } - read, err := uio.NewDagReader(dagnode, node.DAG) - if err != nil { - res.SetError(err, cmds.ErrNormal) - return - } - - readers = append(readers, read) + readers, err := cat(node, paths) + if err != nil { + res.SetError(err, cmds.ErrNormal) + return } reader := io.MultiReader(readers...) res.SetOutput(reader) }, } + +func cat(node *core.IpfsNode, paths []string) ([]io.Reader, error) { + readers := make([]io.Reader, 0, len(paths)) + for _, path := range paths { + dagnode, err := node.Resolver.ResolvePath(path) + if err != nil { + return nil, err + } + read, err := uio.NewDagReader(dagnode, node.DAG) + if err != nil { + return nil, err + } + readers = append(readers, read) + } + return readers, nil +}