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
-}