@cryptotaxi247 / kubo / commits / 92d20e429

add slice utils

ToStrings and ToReaders

Brian Tiger Chow committed Nov 6, 2014 at 04:42 UTC 92d20e429d49c55e5c64171c37f3d469696814ec
5 files changed +48 -39
core/commands2/add.go
+5 -8
@@ -7,6 +7,7 @@ import (
7
8 cmds "github.com/jbenet/go-ipfs/commands"
9 core "github.com/jbenet/go-ipfs/core"
10 + internal "github.com/jbenet/go-ipfs/core/commands2/internal"
11 importer "github.com/jbenet/go-ipfs/importer"
12 dag "github.com/jbenet/go-ipfs/merkledag"
13 )
@@ -34,14 +35,10 @@ var addCmd = &cmds.Command{
35 // if r, _ := opt.(bool); found && r {
36 // }
37
37 - readers := make([]io.Reader, 0)
38 - for _, arg := range req.Arguments() {
39 - reader, ok := arg.(io.Reader)
40 - if !ok {
41 - res.SetError(errors.New("cast error"), cmds.ErrNormal)
42 - return
43 - }
44 - readers = append(readers, reader)
38 + readers, err := internal.ToReaders(req.Arguments())
39 + if err != nil {
40 + res.SetError(err, cmds.ErrNormal)
41 + return
42 }
43
44 dagnodes, err := add(n, readers)
core/commands2/cat.go
+6 -10
@@ -1,11 +1,11 @@
1 package commands
2
3 import (
4 - "errors"
4 "io"
5
6 cmds "github.com/jbenet/go-ipfs/commands"
7 core "github.com/jbenet/go-ipfs/core"
8 + "github.com/jbenet/go-ipfs/core/commands2/internal"
9 uio "github.com/jbenet/go-ipfs/unixfs/io"
10 )
11
@@ -20,19 +20,15 @@ var catCmd = &cmds.Command{
20 `,
21 Run: func(res cmds.Response, req cmds.Request) {
22 node := req.Context().Node
23 - paths := make([]string, 0, len(req.Arguments()))
23 readers := make([]io.Reader, 0, len(req.Arguments()))
24
26 - for _, arg := range req.Arguments() {
27 - path, ok := arg.(string)
28 - if !ok {
29 - res.SetError(errors.New("cast error"), cmds.ErrNormal)
30 - return
31 - }
32 - paths = append(paths, path)
25 + paths, err := internal.ToStrings(req.Arguments())
26 + if err != nil {
27 + res.SetError(err, cmds.ErrNormal)
28 + return
29 }
30
35 - readers, err := cat(node, paths)
31 + readers, err = cat(node, paths)
32 if err != nil {
33 res.SetError(err, cmds.ErrNormal)
34 return
core/commands2/internal/slice_util.go new
+32
@@ -0,0 +1,32 @@
1 +package internal
2 +
3 +import (
4 + "errors"
5 + "io"
6 +)
7 +
8 +var CastErr = errors.New("cast error")
9 +
10 +func ToReaders(slice []interface{}) ([]io.Reader, error) {
11 + readers := make([]io.Reader, 0)
12 + for _, arg := range slice {
13 + reader, ok := arg.(io.Reader)
14 + if !ok {
15 + return nil, CastErr
16 + }
17 + readers = append(readers, reader)
18 + }
19 + return readers, nil
20 +}
21 +
22 +func ToStrings(slice []interface{}) ([]string, error) {
23 + strs := make([]string, 0)
24 + for _, maybe := range slice {
25 + str, ok := maybe.(string)
26 + if !ok {
27 + return nil, CastErr
28 + }
29 + strs = append(strs, str)
30 + }
31 + return strs, nil
32 +}
core/commands2/ls.go
+5 -9
@@ -1,10 +1,10 @@
1 package commands
2
3 import (
4 - "errors"
4 "fmt"
5
6 cmds "github.com/jbenet/go-ipfs/commands"
7 + "github.com/jbenet/go-ipfs/core/commands2/internal"
8 merkledag "github.com/jbenet/go-ipfs/merkledag"
9 )
10
@@ -30,14 +30,10 @@ var lsCmd = &cmds.Command{
30 Run: func(res cmds.Response, req cmds.Request) {
31 node := req.Context().Node
32
33 - paths := make([]string, 0)
34 - for _, arg := range req.Arguments() {
35 - path, ok := arg.(string)
36 - if !ok {
37 - res.SetError(errors.New("cast error"), cmds.ErrNormal)
38 - return
39 - }
40 - paths = append(paths, path)
33 + paths, err := internal.ToStrings(req.Arguments())
34 + if err != nil {
35 + res.SetError(err, cmds.ErrNormal)
36 + return
37 }
38
39 dagnodes := make([]*merkledag.Node, 0)
core/commands2/pin.go
-12
@@ -122,15 +122,3 @@ func pin(n *core.IpfsNode, paths []string, recursive bool) ([]*merkledag.Node, e
122
123 return dagnodes, nil
124 }
125 -
126 -func toStrings(slice []interface{}) ([]string, error) {
127 - strs := make([]string, 0)
128 - for _, maybe := range slice {
129 - str, ok := maybe.(string)
130 - if !ok {
131 - return nil, errors.New("cast error")
132 - }
133 - strs = append(strs, str)
134 - }
135 - return strs, nil
136 -}