|
|
package data
import ( "bytes" "fmt" "io/ioutil" "os"
shell "github.com/ipfs/go-ipfs-api" )
type Storage interface { Publish(o []byte) string Retrieve(id string) []byte }
func Publish(object []byte) string { sh := shell.NewShell("localhost:5001") cid, err := sh.Add(bytes.NewBuffer(object)) if err != nil { fmt.Fprintf(os.Stderr, "error: %s", err) os.Exit(1) } return cid }
func Pin(path string) { sh := shell.NewShell("localhost:5001") err := sh.Pin(path) if err != nil { fmt.Fprintf(os.Stderr, "error: %s", err) os.Exit(1) } }
func Retrieve(hash string) []byte { sh := shell.NewShell("localhost:5001") reader, err := sh.Cat(hash) if err != nil { fmt.Fprintf(os.Stderr, "error: %s", err) os.Exit(1) } content, err := ioutil.ReadAll(reader) if err != nil { fmt.Fprintf(os.Stderr, "error: %s", err) os.Exit(1) } return content }
|