package cmd import ( "crypto/rand" "os" "github.com/lbryio/reflector.go/reflector" "github.com/lbryio/lbry.go/v2/stream" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) func init() { var cmd = &cobra.Command{ Use: "sendblob ADDRESS:PORT [PATH]", Short: "Send a random blob to a reflector server", Args: cobra.RangeArgs(1, 2), Run: sendBlobCmd, } rootCmd.AddCommand(cmd) } func sendBlobCmd(cmd *cobra.Command, args []string) { addr := args[0] var path string if len(args) >= 2 { path = args[1] } c := reflector.Client{} err := c.Connect(addr) if err != nil { log.Fatal("error connecting client to server: ", err) } if path == "" { blob := make(stream.Blob, 1024) _, err = rand.Read(blob) if err != nil { log.Fatal("failed to make random blob: ", err) } err = c.SendBlob(blob) if err != nil { log.Error(err) } return } file, err := os.Open(path) checkErr(err) defer func() { _ = file.Close() }() s, err := stream.New(file) checkErr(err) sdBlob := &stream.SDBlob{} err = sdBlob.FromBlob(s[0]) checkErr(err) for i, b := range s { if i == 0 { err = c.SendSDBlob(b) } else { err = c.SendBlob(b) } checkErr(err) } }