Improve handling of torrent URL's that are HTTP files.

This commit is contained in:
Roger Far 2021-04-28 07:46:07 -06:00
parent 659675d538
commit fe3b7d8867
2 changed files with 37 additions and 5 deletions

View file

@ -137,7 +137,16 @@ namespace RdtClient.Service.Services
public async Task UploadMagnet(String magnetLink, String category, Boolean autoDelete)
{
var magnet = MagnetLink.Parse(magnetLink);
MagnetLink magnet;
try
{
magnet = MagnetLink.Parse(magnetLink);
}
catch (Exception ex)
{
throw new Exception($"{ex.Message}, trying to parse {magnetLink}");
}
var rdTorrent = await GetRdNetClient().AddTorrentMagnetAsync(magnetLink);
@ -146,12 +155,21 @@ namespace RdtClient.Service.Services
public async Task UploadFile(Byte[] bytes, String category, Boolean autoDelete)
{
var torrent = await MonoTorrent.Torrent.LoadAsync(bytes);
var rdTorrent = await GetRdNetClient().AddTorrentFileAsync(bytes);
MonoTorrent.Torrent torrent;
var fileAsBase64 = Convert.ToBase64String(bytes);
try
{
torrent = await MonoTorrent.Torrent.LoadAsync(bytes);
}
catch (Exception ex)
{
throw new Exception($"{ex.Message}, trying to parse {fileAsBase64}");
}
var rdTorrent = await GetRdNetClient().AddTorrentFileAsync(bytes);
await Add(rdTorrent.Id, torrent.InfoHash.ToHex(), category, autoDelete, fileAsBase64, true);
}

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@ -245,7 +246,20 @@ namespace RdtClient.Web.Controllers
foreach (var url in urls)
{
await _qBittorrent.TorrentsAddMagnet(url.Trim(), request.Category, false);
if (url.StartsWith("magnet"))
{
await _qBittorrent.TorrentsAddMagnet(url.Trim(), request.Category, false);
}
else if (url.StartsWith("http"))
{
var httpClient = new HttpClient();
var result = await httpClient.GetByteArrayAsync(url);
await _qBittorrent.TorrentsAddFile(result, request.Category, false);
}
else
{
throw new Exception($"Invalid torrent link format {url}");
}
}
return Ok();