mirror of
https://github.com/logos-storage/logos-storage-go-bindings-example.git
synced 2026-04-03 09:43:39 +00:00
67 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|