You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.2 KiB

package data
import (
"os"
"fmt"
"bytes"
"io/ioutil"
shell "github.com/ipfs/go-ipfs-api"
)
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
}
func PsSubscribe(topic string) *shell.PubSubSubscription {
sh := shell.NewShell("localhost:5001")
sub, err := sh.PubSubSubscribe(topic)
if err != nil {
fmt.Fprintf(os.Stderr, "error: %s", err)
os.Exit(1)
}
return sub
}
func PsPublish(topic, data string) {
sh := shell.NewShell("localhost:5001")
err := sh.PubSubPublish(topic, data)
if err != nil {
fmt.Fprintf(os.Stderr, "error: %s", err)
os.Exit(1)
}
}