mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-18 17:29:27 +08:00
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
|
|
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
|
|
"github.com/jbenet/go-ipfs/blocks"
|
|
"github.com/jbenet/go-ipfs/core"
|
|
u "github.com/jbenet/go-ipfs/util"
|
|
)
|
|
|
|
// BlockGet retrives a raw ipfs block from the node's BlockService
|
|
func BlockGet(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
|
|
|
|
if !u.IsValidHash(args[0]) {
|
|
return fmt.Errorf("block get: not a valid hash")
|
|
}
|
|
|
|
h, err := mh.FromB58String(args[0])
|
|
if err != nil {
|
|
return fmt.Errorf("block get: %v", err)
|
|
}
|
|
|
|
k := u.Key(h)
|
|
log.Debug("BlockGet key: '%q'", k)
|
|
b, err := n.Blocks.GetBlock(k)
|
|
if err != nil {
|
|
return fmt.Errorf("block get: %v", err)
|
|
}
|
|
|
|
_, err = out.Write(b.Data)
|
|
return err
|
|
}
|
|
|
|
// BlockPut reads everything from conn and saves the data to the nodes BlockService
|
|
func BlockPut(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
|
|
data, err := ioutil.ReadAll(os.Stdin)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
b := blocks.NewBlock(data)
|
|
log.Debug("BlockPut key: '%q'", b.Key())
|
|
|
|
k, err := n.Blocks.AddBlock(b)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fmt.Fprintf(out, "added as '%s'\n", k)
|
|
|
|
return nil
|
|
}
|