public void DownloadMetadata_SameTwice() { var link = MagnetLink.Parse("magnet:?xt=urn:btih:1234512345123451234512345123451234512345"); using var engine = new ClientEngine(EngineSettingsBuilder.CreateForTests()); var first = engine.DownloadMetadataAsync(link, CancellationToken.None); Assert.ThrowsAsync <TorrentException> (() => engine.DownloadMetadataAsync(link, CancellationToken.None)); }
public void DownloadMetadata_Cancelled() { var cts = new CancellationTokenSource(); var engine = new ClientEngine(EngineSettingsBuilder.CreateForTests()); var task = engine.DownloadMetadataAsync(new MagnetLink(new InfoHash(new byte[20])), cts.Token); cts.Cancel(); Assert.ThrowsAsync <OperationCanceledException> (() => task); }
public async void Download(SearchResponse sr, long chatId) { System.Console.WriteLine($"downloading {sr.Title}..."); //services var transmission = _scope.CreateScope().ServiceProvider.GetRequiredService <TransmissionService>().Client; var database = _scope.CreateScope().ServiceProvider.GetRequiredService <DatabaseContext>(); System.Console.WriteLine(Directory.GetCurrentDirectory()); var torrentSettings = new TorrentSettings(); NewTorrent torrent; System.Console.WriteLine("trying with magnet"); var metadata = await _engine.DownloadMetadataAsync(MagnetLink.Parse(sr.MagnetUrl), CancellationToken.None); System.Console.WriteLine("downloaded metadata"); torrent = new NewTorrent() { Metainfo = Convert.ToBase64String(metadata) }; var torrentInfo = transmission.TorrentAdd(torrent); if (database.ActiveTorrents.Any(at => at.TorrentId == torrentInfo.ID)) { return; } var activeTorrent = new ActiveTorrent() { ChatId = chatId, TorrentId = torrentInfo.ID, IsFinished = false, }; database.ActiveTorrents.Add(activeTorrent); database.SaveChanges(); }