2026-03-18 12:19:00 +04:00

67 lines
1.5 KiB
Go

package main
import (
"bytes"
"context"
"log"
"os"
"github.com/logos-storage/logos-storage-go-bindings/storage"
)
func main() {
node, err := storage.New(storage.Config{
BlockRetries: 5,
})
if err != nil {
log.Fatalf("Failed to create Logos Storage node: %v", err)
}
version := node.Version()
log.Printf("Logos Storage version: %s", version)
if err := node.Start(); err != nil {
log.Fatalf("Failed to start Logos Storage node: %v", err)
}
log.Println("Logos Storage node started")
buf := bytes.NewBuffer([]byte("Hello World!"))
len := buf.Len()
cid, err := node.UploadReader(context.Background(), storage.UploadOptions{Filepath: "hello.txt"}, buf)
if err != nil {
log.Fatalf("Failed to upload data: %v", err)
}
log.Printf("Uploaded data with CID: %s (size: %d bytes)", cid, len)
f, err := os.Create("hello.txt")
if err != nil {
log.Fatal("Failed to create file:", err)
}
defer f.Close()
opt := storage.DownloadStreamOptions{
Writer: f,
}
if err := node.DownloadStream(context.Background(), cid, opt); err != nil {
log.Fatalf("Failed to download data: %v", err)
}
log.Println("Downloaded data to hello.txt")
// Wait for a SIGINT or SIGTERM signal
// ch := make(chan os.Signal, 1)
// signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
// <-ch
if err := node.Stop(); err != nil {
log.Fatalf("Failed to stop Logos Storage node: %v", err)
}
log.Println("Logos Storage node stopped")
if err := node.Destroy(); err != nil {
log.Fatalf("Failed to destroy Logos Storage node: %v", err)
}
}