Cleanup, make sure the RD API adheres to the set timeout when trying to add a magnet or file.
This commit is contained in:
parent
1fe407ba5a
commit
d9858409db
12 changed files with 46 additions and 42 deletions
|
|
@ -8,15 +8,15 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.5" />
|
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.5" />
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="9.0.5" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.5">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.7">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Serilog" Version="4.2.0" />
|
<PackageReference Include="Serilog" Version="4.3.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,13 @@
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||||
<PackageReference Include="Moq" Version="4.20.72" />
|
<PackageReference Include="Moq" Version="4.20.72" />
|
||||||
<PackageReference Include="TestableIO.System.IO.Abstractions" Version="22.0.14" />
|
<PackageReference Include="TestableIO.System.IO.Abstractions" Version="22.0.15" />
|
||||||
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="22.0.14" />
|
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="22.0.15" />
|
||||||
<PackageReference Include="TestableIO.System.IO.Abstractions.Wrappers" Version="22.0.14" />
|
<PackageReference Include="TestableIO.System.IO.Abstractions.Wrappers" Version="22.0.15" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0">
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ public class EnricherTest : IDisposable
|
||||||
|
|
||||||
public EnricherTest()
|
public EnricherTest()
|
||||||
{
|
{
|
||||||
_mockRepository = new MockRepository(MockBehavior.Strict);
|
_mockRepository = new(MockBehavior.Strict);
|
||||||
_loggerMock = _mockRepository.Create<ILogger<Enricher>>(MockBehavior.Loose);
|
_loggerMock = _mockRepository.Create<ILogger<Enricher>>(MockBehavior.Loose);
|
||||||
_trackerListGrabberMock = _mockRepository.Create<ITrackerListGrabber>();
|
_trackerListGrabberMock = _mockRepository.Create<ITrackerListGrabber>();
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ public class EnricherTest : IDisposable
|
||||||
|
|
||||||
private static BEncodedDictionary CreateTorrentDictWithOnlyAnnounce(String announceUrl)
|
private static BEncodedDictionary CreateTorrentDictWithOnlyAnnounce(String announceUrl)
|
||||||
{
|
{
|
||||||
return new BEncodedDictionary
|
return new()
|
||||||
{
|
{
|
||||||
["announce"] = new BEncodedString(announceUrl),
|
["announce"] = new BEncodedString(announceUrl),
|
||||||
["info"] = new BEncodedDictionary()
|
["info"] = new BEncodedDictionary()
|
||||||
|
|
@ -76,7 +76,7 @@ public class EnricherTest : IDisposable
|
||||||
|
|
||||||
private static BEncodedDictionary CreateTorrentDictWithNoTrackers()
|
private static BEncodedDictionary CreateTorrentDictWithNoTrackers()
|
||||||
{
|
{
|
||||||
return new BEncodedDictionary
|
return new()
|
||||||
{
|
{
|
||||||
["info"] = new BEncodedDictionary()
|
["info"] = new BEncodedDictionary()
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,9 @@ public class WebsocketsUpdater(ILogger<WebsocketsUpdater> logger, IServiceProvid
|
||||||
await Task.Delay(1000, stoppingToken);
|
await Task.Delay(1000, stoppingToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
var remoteService = serviceProvider.GetRequiredService<RemoteService>();
|
var scope = serviceProvider.CreateScope();
|
||||||
|
|
||||||
|
var remoteService = scope.ServiceProvider.GetRequiredService<RemoteService>();
|
||||||
|
|
||||||
while (!stoppingToken.IsCancellationRequested)
|
while (!stoppingToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -12,20 +12,20 @@
|
||||||
<PackageReference Include="AllDebrid.NET" Version="1.0.18" />
|
<PackageReference Include="AllDebrid.NET" Version="1.0.18" />
|
||||||
<PackageReference Include="Aria2.NET" Version="1.0.6" />
|
<PackageReference Include="Aria2.NET" Version="1.0.6" />
|
||||||
<PackageReference Include="DebridLinkFr.NET" Version="1.0.4" />
|
<PackageReference Include="DebridLinkFr.NET" Version="1.0.4" />
|
||||||
<PackageReference Include="Downloader" Version="3.3.4" />
|
<PackageReference Include="Downloader" Version="4.0.2" />
|
||||||
<PackageReference Include="Downloader.NET" Version="1.0.16" />
|
<PackageReference Include="Downloader.NET" Version="1.0.18" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="9.0.5" />
|
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.5.0" />
|
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.7.0" />
|
||||||
<PackageReference Include="MonoTorrent" Version="3.0.2" />
|
<PackageReference Include="MonoTorrent" Version="3.0.2" />
|
||||||
<PackageReference Include="Polly" Version="8.5.2" />
|
<PackageReference Include="Polly" Version="8.6.2" />
|
||||||
<PackageReference Include="Premiumize.NET" Version="1.0.10" />
|
<PackageReference Include="Premiumize.NET" Version="1.0.10" />
|
||||||
<PackageReference Include="RD.NET" Version="2.1.11" />
|
<PackageReference Include="RD.NET" Version="2.1.11" />
|
||||||
<PackageReference Include="Serilog" Version="4.2.0" />
|
<PackageReference Include="Serilog" Version="4.3.0" />
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
|
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
|
||||||
<PackageReference Include="SharpCompress" Version="0.39.0" />
|
<PackageReference Include="SharpCompress" Version="0.40.0" />
|
||||||
<PackageReference Include="Synology.Api.Client" Version="0.3.93" />
|
<PackageReference Include="Synology.Api.Client" Version="0.3.93" />
|
||||||
<PackageReference Include="TestableIO.System.IO.Abstractions" Version="22.0.14" />
|
<PackageReference Include="TestableIO.System.IO.Abstractions" Version="22.0.15" />
|
||||||
<PackageReference Include="TestableIO.System.IO.Abstractions.Wrappers" Version="22.0.14" />
|
<PackageReference Include="TestableIO.System.IO.Abstractions.Wrappers" Version="22.0.15" />
|
||||||
<PackageReference Include="TorBox.NET" Version="1.5.0" />
|
<PackageReference Include="TorBox.NET" Version="1.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public class BezzadDownloader : IDownloader
|
||||||
// For all options, see https://github.com/bezzad/Downloader
|
// For all options, see https://github.com/bezzad/Downloader
|
||||||
_downloadConfiguration = new()
|
_downloadConfiguration = new()
|
||||||
{
|
{
|
||||||
MaxTryAgainOnFailover = 5,
|
MaxTryAgainOnFailure = 5,
|
||||||
RangeDownload = false,
|
RangeDownload = false,
|
||||||
ClearPackageOnCompletionWithFailure = true,
|
ClearPackageOnCompletionWithFailure = true,
|
||||||
ReserveStorageSpaceBeforeStartingDownload = false,
|
ReserveStorageSpaceBeforeStartingDownload = false,
|
||||||
|
|
|
||||||
|
|
@ -76,14 +76,14 @@ public sealed class Enricher(ILogger<Enricher> logger, ITrackerListGrabber track
|
||||||
|
|
||||||
if (!paramDict.ContainsKey(key))
|
if (!paramDict.ContainsKey(key))
|
||||||
{
|
{
|
||||||
paramDict[key] = new List<String>();
|
paramDict[key] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
paramDict[key].AddRange(queryKVs.GetValues(key) ?? []);
|
paramDict[key].AddRange(queryKVs.GetValues(key) ?? []);
|
||||||
}
|
}
|
||||||
|
|
||||||
var existingTrackers = paramDict.TryGetValue("tr", out var value)
|
var existingTrackers = paramDict.TryGetValue("tr", out var value)
|
||||||
? new HashSet<String>(value, StringComparer.OrdinalIgnoreCase)
|
? new(value, StringComparer.OrdinalIgnoreCase)
|
||||||
: new HashSet<String>(StringComparer.OrdinalIgnoreCase);
|
: new HashSet<String>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
paramDict.Remove("tr");
|
paramDict.Remove("tr");
|
||||||
|
|
|
||||||
|
|
@ -128,14 +128,18 @@ public class RealDebridTorrentClient(ILogger<RealDebridTorrentClient> logger, IH
|
||||||
|
|
||||||
public async Task<String> AddMagnet(String magnetLink)
|
public async Task<String> AddMagnet(String magnetLink)
|
||||||
{
|
{
|
||||||
var result = await GetClient().Torrents.AddMagnetAsync(magnetLink);
|
var timeoutCancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(Settings.Get.Provider.Timeout));
|
||||||
|
|
||||||
|
var result = await GetClient().Torrents.AddMagnetAsync(magnetLink, timeoutCancellationToken.Token);
|
||||||
|
|
||||||
return result.Id;
|
return result.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<String> AddFile(Byte[] bytes)
|
public async Task<String> AddFile(Byte[] bytes)
|
||||||
{
|
{
|
||||||
var result = await GetClient().Torrents.AddFileAsync(bytes);
|
var timeoutCancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(Settings.Get.Provider.Timeout));
|
||||||
|
|
||||||
|
var result = await GetClient().Torrents.AddFileAsync(bytes, timeoutCancellationToken.Token);
|
||||||
|
|
||||||
return result.Id;
|
return result.Id;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -217,16 +217,16 @@ public class TorrentRunner(ILogger<TorrentRunner> logger, Torrents torrents, Dow
|
||||||
Log($"Unpack reported an error: {unpackClient.Error}", download, download.Torrent);
|
Log($"Unpack reported an error: {unpackClient.Error}", download, download.Torrent);
|
||||||
|
|
||||||
await downloads.UpdateError(downloadId, unpackClient.Error);
|
await downloads.UpdateError(downloadId, unpackClient.Error);
|
||||||
await downloads.UpdateCompleted(downloadId, DateTimeOffset.UtcNow);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log($"Unpack finished successfully", download, download.Torrent);
|
Log($"Unpack finished successfully", download, download.Torrent);
|
||||||
|
|
||||||
await downloads.UpdateUnpackingFinished(downloadId, DateTimeOffset.UtcNow);
|
await downloads.UpdateUnpackingFinished(downloadId, DateTimeOffset.UtcNow);
|
||||||
await downloads.UpdateCompleted(downloadId, DateTimeOffset.UtcNow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await downloads.UpdateCompleted(downloadId, DateTimeOffset.UtcNow);
|
||||||
|
|
||||||
ActiveUnpackClients.TryRemove(downloadId, out _);
|
ActiveUnpackClients.TryRemove(downloadId, out _);
|
||||||
|
|
||||||
Log($"Removed from ActiveUnpackClients", download, download.Torrent);
|
Log($"Removed from ActiveUnpackClients", download, download.Torrent);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ using System.IO.Abstractions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Web;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using MonoTorrent;
|
using MonoTorrent;
|
||||||
using RdtClient.Data.Data;
|
using RdtClient.Data.Data;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
using System.Net.Http.Headers;
|
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
@ -96,7 +95,7 @@ public class TrackerListGrabber(IHttpClientFactory httpClientFactory, IMemoryCac
|
||||||
{
|
{
|
||||||
logger.LogError(ex, "Unable to fetch tracker list.");
|
logger.LogError(ex, "Unable to fetch tracker list.");
|
||||||
|
|
||||||
throw new Exception("Unable to fetch tracker list for enrichment.", ex);
|
throw new("Unable to fetch tracker list for enrichment.", ex);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
@ -116,7 +115,7 @@ public class TrackerListGrabber(IHttpClientFactory httpClientFactory, IMemoryCac
|
||||||
? $"v{version[..version.LastIndexOf('.')]}"
|
? $"v{version[..version.LastIndexOf('.')]}"
|
||||||
: "";
|
: "";
|
||||||
|
|
||||||
httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("RdtClient", currentVersion));
|
httpClient.DefaultRequestHeaders.UserAgent.Add(new("RdtClient", currentVersion));
|
||||||
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(15));
|
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(15));
|
||||||
var token = cts.Token;
|
var token = cts.Token;
|
||||||
var response = await httpClient.GetAsync(trackerUri, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false);
|
var response = await httpClient.GetAsync(trackerUri, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false);
|
||||||
|
|
|
||||||
|
|
@ -30,16 +30,16 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="9.0.5" />
|
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="9.0.5" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.5">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.7">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="9.0.5" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="9.0.7" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="9.0.5" />
|
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="9.0.7" />
|
||||||
<PackageReference Include="Serilog" Version="4.2.0" />
|
<PackageReference Include="Serilog" Version="4.3.0" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
|
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue