core/coreunix: Created 'AddWrapped' function to add files with a wrapped directory (to preserve filename in path)
Matt Bell committed
Jan 31, 2015 at 19:05 UTC
62333521c6aa451666758c587ae228a2ac5dd0cb
1 file changed
+17
core/coreunix/add.go
+17
@@ -3,6 +3,7 @@ package coreunix
3
import (
4
"errors"
5
"io"
6
+ "io/ioutil"
7
"os"
8
gopath "path"
9
@@ -64,6 +65,22 @@ func AddR(n *core.IpfsNode, root string) (key string, err error) {
65
return k.String(), nil
66
}
67
68
+// AddWrapped adds data from a reader, and wraps it with a directory object
69
+// to preserve the filename.
70
+func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *merkledag.Node, error) {
71
+ file := files.NewReaderFile(filename, ioutil.NopCloser(r), nil)
72
+ dir := files.NewSliceFile("", []files.File{file})
73
+ dagnode, err := addDir(n, dir)
74
+ if err != nil {
75
+ return "", nil, err
76
+ }
77
+ k, err := dagnode.Key()
78
+ if err != nil {
79
+ return "", nil, err
80
+ }
81
+ return gopath.Join(k.String(), filename), dagnode, nil
82
+}
83
+
84
func add(n *core.IpfsNode, readers []io.Reader) ([]*merkledag.Node, error) {
85
mp, ok := n.Pinning.(pin.ManualPinner)
86
if !ok {