Improve handling of torrent URL's that are HTTP files.
This commit is contained in:
parent
659675d538
commit
fe3b7d8867
2 changed files with 37 additions and 5 deletions
|
|
@ -137,7 +137,16 @@ namespace RdtClient.Service.Services
|
||||||
|
|
||||||
public async Task UploadMagnet(String magnetLink, String category, Boolean autoDelete)
|
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);
|
var rdTorrent = await GetRdNetClient().AddTorrentMagnetAsync(magnetLink);
|
||||||
|
|
||||||
|
|
@ -146,12 +155,21 @@ namespace RdtClient.Service.Services
|
||||||
|
|
||||||
public async Task UploadFile(Byte[] bytes, String category, Boolean autoDelete)
|
public async Task UploadFile(Byte[] bytes, String category, Boolean autoDelete)
|
||||||
{
|
{
|
||||||
var torrent = await MonoTorrent.Torrent.LoadAsync(bytes);
|
MonoTorrent.Torrent torrent;
|
||||||
|
|
||||||
var rdTorrent = await GetRdNetClient().AddTorrentFileAsync(bytes);
|
|
||||||
|
|
||||||
var fileAsBase64 = Convert.ToBase64String(bytes);
|
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);
|
await Add(rdTorrent.Id, torrent.InfoHash.ToHex(), category, autoDelete, fileAsBase64, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
@ -245,7 +246,20 @@ namespace RdtClient.Web.Controllers
|
||||||
|
|
||||||
foreach (var url in urls)
|
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();
|
return Ok();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue