public async Task<TorrentManager> AddAsync (Torrent torrent, string saveDirectory, TorrentSettings settings)
        {
            await MainLoop.SwitchThread ();

            var editor = new TorrentEditor (new BEncodedDictionary {
                { "info", BEncodedValue.Decode (torrent.InfoMetadata) }
            });
            editor.SetCustom ("name", (BEncodedString) torrent.Name);

            if (torrent.AnnounceUrls.Count > 0) {
                if (torrent.AnnounceUrls.Count == 1 && torrent.AnnounceUrls[0].Count == 1) {
                    editor.Announce = torrent.AnnounceUrls.Single ().Single ();
                } else {
                    foreach (var tier in torrent.AnnounceUrls) {
                        var list = new List<string> ();
                        foreach (var tracker in tier)
                            list.Add (tracker);
                        editor.Announces.Add (list);
                    }
                }
            }

            var metadataCachePath = Settings.GetMetadataPath (torrent.InfoHashes);
            Directory.CreateDirectory (Path.GetDirectoryName (metadataCachePath)!);
            File.WriteAllBytes (metadataCachePath, editor.ToDictionary ().Encode ());

            return await AddAsync (null, torrent, saveDirectory, settings);
        }
        public void ReplaceInfoDict()
        {
            var editor = new TorrentEditor(new BEncodedDictionary())
            {
                CanEditSecureMetadata = false
            };

            editor.SetCustom("info", new BEncodedDictionary());
        }
Beispiel #3
0
 public void ReplaceInfoDict()
 {
     Assert.Throws <InvalidOperationException>(() => {
         var editor = new TorrentEditor(new BEncodedDictionary())
         {
             CanEditSecureMetadata = false
         };
         editor.SetCustom("info", new BEncodedDictionary());
     });
 }
 public void ReplaceInfoDict()
 {
     var editor = new TorrentEditor (new BEncodedDictionary ()) { CanEditSecureMetadata = false };
     editor.SetCustom ("info", new BEncodedDictionary ());
 }
 public void ReplaceInfoDict()
 {
     var editor = new TorrentEditor(new BEncodedDictionary()) {CanEditSecureMetadata = false};
     Assert.Throws<InvalidOperationException>(() => editor.SetCustom("info", new BEncodedDictionary()));
 }