require.NoError(t, err)
mi.InfoBytes, err = bencode.Marshal(info)
require.NoError(t, err)
- magnet := mi.Magnet(name, mi.HashInfoBytes()).String()
+ magnet := mi.Magnet(nil, &info).String()
tr, err := cl.AddTorrent(&mi)
require.NoError(t, err)
require.True(t, tr.Seeding())
os.Exit(1)
}
- fmt.Fprintf(os.Stdout, "%s\n", mi.Magnet(info.Name, mi.HashInfoBytes()).String())
+ fmt.Fprintf(os.Stdout, "%s\n", mi.Magnet(nil, &info).String())
}
info, err := mi.UnmarshalInfo()
require.NoError(t, err)
- m := mi.Magnet(info.Name, mi.HashInfoBytes())
+ m := mi.Magnet(nil, &info)
assert.EqualValues(t, "bootstrap.dat", m.DisplayName)
// mi.Info.PieceLength = 256 * 1024
}
-// Creates a Magnet from a MetaInfo.
-func (mi *MetaInfo) Magnet(displayName string, infoHash Hash) (m Magnet) {
+// Creates a Magnet from a MetaInfo. Optional infohash and parsed info can be provided.
+func (mi *MetaInfo) Magnet(infoHash *Hash, info *Info) (m Magnet) {
for t := range mi.UpvertedAnnounceList().DistinctValues() {
m.Trackers = append(m.Trackers, t)
}
- m.DisplayName = displayName
- m.InfoHash = infoHash
+ if info != nil {
+ m.DisplayName = info.Name
+ }
+ if infoHash != nil {
+ m.InfoHash = *infoHash
+ } else {
+ m.InfoHash = mi.HashInfoBytes()
+ }
+ //m.Params = make(url.Values)
+ //m.Params["ws"] = mi.UrlList
return
}
"testing"
"github.com/anacrolix/missinggo"
+ qt "github.com/frankban/quicktest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
mi, err := LoadFromFile("testdata/SKODAOCTAVIA336x280_archive.torrent")
require.NoError(t, err)
assert.Len(t, mi.UrlList, 3)
+ qt.Assert(t, mi.Magnet(nil, nil).String(), qt.ContentEquals,
+ "magnet:?xt=urn:btih:d4b197dff199aad447a9a352e31528adbbd97922&tr=http%3A%2F%2Fbt1.archive.org%3A6969%2Fannounce&tr=http%3A%2F%2Fbt2.archive.org%3A6969%2Fannounce")
}
func TestMetainfoWithStringURLList(t *testing.T) {
mi, err := LoadFromFile("testdata/flat-url-list.torrent")
require.NoError(t, err)
assert.Len(t, mi.UrlList, 1)
+ qt.Assert(t, mi.Magnet(nil, nil).String(), qt.ContentEquals,
+ "magnet:?xt=urn:btih:9da24e606e4ed9c7b91c1772fb5bf98f82bd9687&tr=http%3A%2F%2Fbt1.archive.org%3A6969%2Fannounce&tr=http%3A%2F%2Fbt2.archive.org%3A6969%2Fannounce")
}
// https://github.com/anacrolix/torrent/issues/247