public void AddTorrent_Test() { if (!File.Exists(FILE_PATH)) throw new Exception("Torrent file not found"); var fstream = File.OpenRead(FILE_PATH); byte[] filebytes = new byte[fstream.Length]; fstream.Read(filebytes, 0, Convert.ToInt32(fstream.Length)); string encodedData = Convert.ToBase64String(filebytes); //The path relative to the server (priority than the metadata) //string filename = "/DataVolume/shares/Public/Transmission/torrents/ubuntu-10.04.4-server-amd64.iso.torrent"; var torrent = new NewTorrent { //Filename = filename, Metainfo = encodedData, Paused = false }; var newTorrentInfo = client.AddTorrent(torrent); Assert.IsNotNull(newTorrentInfo); Assert.IsTrue(newTorrentInfo.ID != 0); }
public override Task<string> Download(string path, ITorrentSearchResult searchResult) { return Task.Run(() => { var client = CreateClient(); var torrent = new NewTorrent { Filename = searchResult.MagnetUri, DownloadDirectory = Path.Combine(path, searchResult.Name) }; var result = client.AddTorrent(torrent); if (!string.IsNullOrEmpty(result.ErrorString)) throw new NovaromaException(result.ErrorString + " ("+ result.Error +")"); return result.HashString; }); }
/// <summary> /// Add torrent (API: torrent-add) /// </summary> /// <returns>Torrent info (ID, Name and HashString)</returns> public async Task<NewTorrentInfo> TorrentAddAsync(NewTorrent torrent) { if (String.IsNullOrWhiteSpace(torrent.Metainfo) && String.IsNullOrWhiteSpace(torrent.Filename)) throw new Exception("Either \"filename\" or \"metainfo\" must be included."); var request = new TransmissionRequest("torrent-add", torrent.ToDictionary()); var response = await SendRequestAsync(request); var jObject = response.Deserialize<JObject>(); if (jObject == null || jObject.First == null) return null; NewTorrentInfo result = null; JToken value = null; if (jObject.TryGetValue("torrent-duplicate", out value)) result = JsonConvert.DeserializeObject<NewTorrentInfo>(value.ToString()); else if (jObject.TryGetValue("torrent-added", out value)) result = JsonConvert.DeserializeObject<NewTorrentInfo>(value.ToString()); return result; }