1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-07-01 02:30:39 +08:00

Merge pull request #702 from jbenet/fix/coreUI

address concerns about user interface with new Path type
This commit is contained in:
Brian Tiger Chow
2015-01-30 14:23:39 -08:00
5 changed files with 27 additions and 12 deletions

View File

@ -4,7 +4,7 @@ import (
"errors" "errors"
"io" "io"
"os" "os"
"path" gopath "path"
"github.com/jbenet/go-ipfs/commands/files" "github.com/jbenet/go-ipfs/commands/files"
core "github.com/jbenet/go-ipfs/core" core "github.com/jbenet/go-ipfs/core"
@ -14,14 +14,13 @@ import (
"github.com/jbenet/go-ipfs/pin" "github.com/jbenet/go-ipfs/pin"
"github.com/jbenet/go-ipfs/thirdparty/eventlog" "github.com/jbenet/go-ipfs/thirdparty/eventlog"
unixfs "github.com/jbenet/go-ipfs/unixfs" unixfs "github.com/jbenet/go-ipfs/unixfs"
u "github.com/jbenet/go-ipfs/util"
) )
var log = eventlog.Logger("coreunix") var log = eventlog.Logger("coreunix")
// Add builds a merkledag from the a reader, pinning all objects to the local // Add builds a merkledag from the a reader, pinning all objects to the local
// datastore. Returns a key representing the root node. // datastore. Returns a key representing the root node.
func Add(n *core.IpfsNode, r io.Reader) (u.Key, error) { func Add(n *core.IpfsNode, r io.Reader) (string, error) {
// TODO more attractive function signature importer.BuildDagFromReader // TODO more attractive function signature importer.BuildDagFromReader
dagNode, err := importer.BuildDagFromReader( dagNode, err := importer.BuildDagFromReader(
r, r,
@ -35,7 +34,12 @@ func Add(n *core.IpfsNode, r io.Reader) (u.Key, error) {
if err := n.Pinning.Flush(); err != nil { if err := n.Pinning.Flush(); err != nil {
return "", err return "", err
} }
return dagNode.Key() k, err := dagNode.Key()
if err != nil {
return "", err
}
return k.String(), nil
} }
// AddR recursively adds files in |path|. // AddR recursively adds files in |path|.
@ -124,7 +128,7 @@ Loop:
return nil, err return nil, err
} }
_, name := path.Split(file.FileName()) _, name := gopath.Split(file.FileName())
err = tree.AddNodeLink(name, node) err = tree.AddNodeLink(name, node)
if err != nil { if err != nil {

View File

@ -8,7 +8,8 @@ import (
uio "github.com/jbenet/go-ipfs/unixfs/io" uio "github.com/jbenet/go-ipfs/unixfs/io"
) )
func Cat(n *core.IpfsNode, p path.Path) (io.Reader, error) { func Cat(n *core.IpfsNode, pstr string) (io.Reader, error) {
p := path.FromString(pstr)
dagNode, err := n.Resolver.ResolvePath(p) dagNode, err := n.Resolver.ResolvePath(p)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -3,12 +3,24 @@ package path
import ( import (
"path" "path"
"strings" "strings"
u "github.com/jbenet/go-ipfs/util"
) )
// TODO: debate making this a private struct wrapped in a public interface // TODO: debate making this a private struct wrapped in a public interface
// would allow us to control creation, and cache segments. // would allow us to control creation, and cache segments.
type Path string type Path string
// FromString safely converts a string type to a Path type
func FromString(s string) Path {
return Path(s)
}
// FromKey safely converts a Key type to a Path type
func FromKey(k u.Key) Path {
return Path(k.String())
}
func (p Path) Segments() []string { func (p Path) Segments() []string {
cleaned := path.Clean(string(p)) cleaned := path.Clean(string(p))
segments := strings.Split(cleaned, "/") segments := strings.Split(cleaned, "/")

View File

@ -15,7 +15,6 @@ import (
coreunix "github.com/jbenet/go-ipfs/core/coreunix" coreunix "github.com/jbenet/go-ipfs/core/coreunix"
mocknet "github.com/jbenet/go-ipfs/p2p/net/mock" mocknet "github.com/jbenet/go-ipfs/p2p/net/mock"
"github.com/jbenet/go-ipfs/p2p/peer" "github.com/jbenet/go-ipfs/p2p/peer"
path "github.com/jbenet/go-ipfs/path"
"github.com/jbenet/go-ipfs/thirdparty/unit" "github.com/jbenet/go-ipfs/thirdparty/unit"
errors "github.com/jbenet/go-ipfs/util/debugerror" errors "github.com/jbenet/go-ipfs/util/debugerror"
testutil "github.com/jbenet/go-ipfs/util/testutil" testutil "github.com/jbenet/go-ipfs/util/testutil"
@ -126,12 +125,12 @@ func DirectAddCat(data []byte, conf testutil.LatencyConfig) error {
return err return err
} }
keyAdded, err := coreunix.Add(adder, bytes.NewReader(data)) added, err := coreunix.Add(adder, bytes.NewReader(data))
if err != nil { if err != nil {
return err return err
} }
readerCatted, err := coreunix.Cat(catter, path.Path(keyAdded.String())) readerCatted, err := coreunix.Cat(catter, added)
if err != nil { if err != nil {
return err return err
} }

View File

@ -12,7 +12,6 @@ import (
coreunix "github.com/jbenet/go-ipfs/core/coreunix" coreunix "github.com/jbenet/go-ipfs/core/coreunix"
mocknet "github.com/jbenet/go-ipfs/p2p/net/mock" mocknet "github.com/jbenet/go-ipfs/p2p/net/mock"
"github.com/jbenet/go-ipfs/p2p/peer" "github.com/jbenet/go-ipfs/p2p/peer"
path "github.com/jbenet/go-ipfs/path"
"github.com/jbenet/go-ipfs/thirdparty/unit" "github.com/jbenet/go-ipfs/thirdparty/unit"
errors "github.com/jbenet/go-ipfs/util/debugerror" errors "github.com/jbenet/go-ipfs/util/debugerror"
testutil "github.com/jbenet/go-ipfs/util/testutil" testutil "github.com/jbenet/go-ipfs/util/testutil"
@ -106,12 +105,12 @@ func RunThreeLeggedCat(data []byte, conf testutil.LatencyConfig) error {
return err return err
} }
keyAdded, err := coreunix.Add(adder, bytes.NewReader(data)) added, err := coreunix.Add(adder, bytes.NewReader(data))
if err != nil { if err != nil {
return err return err
} }
readerCatted, err := coreunix.Cat(catter, path.Path(keyAdded.String())) readerCatted, err := coreunix.Cat(catter, added)
if err != nil { if err != nil {
return err return err
} }