}
func (cl *Client) AddTorrent(mi *metainfo.MetaInfo) (T *Torrent, err error) {
- T, _, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
+ ts, err := TorrentSpecFromMetaInfoErr(mi)
+ if err != nil {
+ return
+ }
+ T, _, err = cl.AddTorrentSpec(ts)
return
}
if ev.TorrentFilePath != "" {
_, err := client.AddTorrentFromFile(ev.TorrentFilePath)
if err != nil {
- log.Printf("error adding torrent to client: %s", err)
+ log.Printf("error adding torrent from file %q to client: %v", ev.TorrentFilePath, err)
}
} else if ev.MagnetURI != "" {
_, err := client.AddMagnet(ev.MagnetURI)
package torrent
import (
+ "fmt"
+
"github.com/anacrolix/torrent/metainfo"
"github.com/anacrolix/torrent/storage"
)
return
}
-func TorrentSpecFromMetaInfo(mi *metainfo.MetaInfo) *TorrentSpec {
+func TorrentSpecFromMetaInfoErr(mi *metainfo.MetaInfo) (*TorrentSpec, error) {
info, err := mi.UnmarshalInfo()
if err != nil {
- panic(err)
+ return nil, fmt.Errorf("unmarshalling info: %w", err)
}
return &TorrentSpec{
Trackers: mi.UpvertedAnnounceList(),
}
return
}(),
+ }, nil
+}
+
+func TorrentSpecFromMetaInfo(mi *metainfo.MetaInfo) *TorrentSpec {
+ ts, err := TorrentSpecFromMetaInfoErr(mi)
+ if err != nil {
+ panic(err)
}
+ return ts
}