Commit graph

488 commits

Author SHA1 Message Date
Cucumberrbob
2944101657
Use DownloadableFileFilter in AllDebridTorrentClient to filter files
Also updates unit tests to not test if filter works. Test filter is used appropriately instead.
2025-03-03 11:57:43 +00:00
Cucumberrbob
816c72f418
Use DownloadableFileFilter in TorBoxTorrentClient to filter files 2025-03-03 11:55:26 +00:00
Cucumberrbob
a02fcc6c1e
Inject DownloadableFileFilter in Service.DiConfig 2025-03-03 11:54:01 +00:00
Cucumberrbob
b95dbcc824
Add DownloadableFileFilter + unit tests
`DownloadableFileFilter` is an abstraction of the filtering we do in most of the `TorrentClient`s.
It operates on a single file at a time, not the entire torrent.
2025-03-03 11:52:19 +00:00
Roger Far
85d6b820f3 Upgrade packages, fixed few formatting issues. 2025-02-23 11:42:38 -07:00
Roger Far
7436e2d036
Merge pull request #715 from Cucumberrbob/fix/use-getsymlinkpath-method
Actually use `GetSymlinkPath` logic
2025-02-23 11:24:23 -07:00
Roger Far
115a1dcc56
Merge pull request #709 from Wald764/pr-main-repo
⬆️ DebridLinkFr.NET to 1.0.4
2025-02-23 11:23:58 -07:00
Roger Far
a4b95923b2
Merge pull request #708 from Cucumberrbob/fix/pm-nested-files
[PM] fix: search subdirectories using `item.Id` not `item.FolderId`
2025-02-23 11:23:38 -07:00
Roger Far
f0310e2b00
Merge pull request #707 from Cucumberrbob/fix/existing-file-in-error-processed-watch-path
Delete file if exists when copying to `Error Path` or `Processed Path` (watch folder)
2025-02-23 11:23:07 -07:00
Cucumberrbob
d292fbaee8
remove superfluous newline 2025-02-20 14:59:09 +00:00
Cucumberrbob
8e1f61472a
remove commented out line 2025-02-20 14:58:37 +00:00
Cucumberrbob
439b266946
Actually use GetSymlinkPath 2025-02-20 14:57:44 +00:00
Wald764
66f0ae0e7c ⬆️ DebridLinkFr.NET to 1.0.4 2025-02-18 18:38:07 +01:00
Cucumberrbob
5a78125053
[PM] fix: search subdirectories using item.Id as folderId when getting downloaod links 2025-02-18 11:51:30 +00:00
Cucumberrbob
29914138aa
cleanup 2025-02-17 23:31:13 +00:00
Cucumberrbob
c43be84507
Delete file if exists when copying to {error,processed}StorePath (watch folder) 2025-02-17 23:03:38 +00:00
Cucumberrbob
1d15b0d651
Add tests for AllDebridTorrentClient
Tests:
- `GetDownloadLinks`
  - `IncludeRegex` filter works
  - `ExcludeRegex` filter works
  - `DownloadMinSize` filter works
  - only `IncludeRegex` is used when both `IncludeRegex` and `ExcludeRegex` are set
  - gets links for all files if none of the above filters are set
  - returns null if `torrent.RdId` is null
- `GetTorrents`
  - [Both full/partial sync] returns empty list when no torrents present in api response
  - [full sync] overrides any previous torrents in cache, deleting those not present in the api response
  - [partial sync] updates torrents in cache according to the api response
  - [partial sync] adds torrents to cache according to the api response
  - `Map` (private so tested via `GetTorrents`)
    - Computes progress correctly from `Downloaded / Size`
  - `UpdateData`
    - [`torrentClientTorrent != null`] does not get from api, updates the `torrent` accordingly
    - [`torrentClientTorrent == null`] gets from api, updates the `torrent` accordingly
    - [`torrentClientTorrent == null`] when torrent deleted from rd, updates `RdStatusRaw = "deleted""`
    - when `torrent.RdId == null`, returns the `torrent` unmodified
2025-02-17 22:04:18 +00:00
Cucumberrbob
e0264a6e29
Add tests for DownloadHelper (GetDownloadPath)
Tests:
- [Both overloads] uses the `download.Link` to guess the filenamem if it's not present
- [Both overloads] returns null if `download.Link` is null
- [Both overloads] returns nuyll if `download.RdName` is null
- [Both overloads] works for a file in a deeply nested subdirectory
- [overload with `downloadPath` argument only] creates the correct directory
2025-02-17 22:01:53 +00:00
Cucumberrbob
95ef1f42b8
Add tests for DownloadStationDownloader
Tests:
- Downloads successfully when everything goes right first time
- Downloads successfully when the 5th api call is successful after 4 failures
- Fails to download when 5 api calls fail in a row
- Fails to download if the file has already been added to `Download Station` (when `GetInfoAsync` does not error)
- FAils to download if `remotePath` cannot be parsed by `Path.GetDirectoryName()`
2025-02-17 22:01:16 +00:00
Cucumberrbob
f4ca137e83
Add tests for Torrents#RunTorrentComplete
Tests:
- doesn't run command when not present
- does run command when present
- listens to events on process for stdout/stderr
2025-02-17 22:00:57 +00:00
Cucumberrbob
3dee900be6
Add test project RdtClient.Service.Test 2025-02-17 22:00:33 +00:00
Cucumberrbob
2bbbf0fd10
Use ISynologyClient (mockable) and inject IDelayProvider so SynologyTorrentClient is testable 2025-02-17 22:00:19 +00:00
Cucumberrbob
c546bd0173
Use IProcessFactory, IFileSystem in Service.Torrents#RunTorrentComplete
Also adds dependency injection to `Torrents#RunTorrentComplete` for `DbSettings` (`Settings.Get`)
2025-02-17 21:59:56 +00:00
Cucumberrbob
fd073b4762
Add interfaces for TorrentData, Downloads, Process, ProcessFactory
Making them interfaces lets us dependency inject them, allowing a given class to be tested.
2025-02-17 21:57:29 +00:00
Cucumberrbob
daf8a9c6da
DownloadHelper: use IFileSystem for testable filesystem access 2025-02-17 21:57:02 +00:00
Cucumberrbob
95307f2933
Use AllDebridNetClientFactory so AD client can be dependency-injected 2025-02-17 21:56:32 +00:00
Roger Far
fe241db5db Upgrade AllDebrid and Downloader.NET to the latest versions.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-02-16 09:44:21 -07:00
Roger Far
7c3c1fb24c
Merge pull request #692 from Cucumberrbob/fix/include-exclude-pm-tb
[PM] [TB] Fix: Implement `IncludeRegex`, `ExcludeRegex`, and `DownloadMinSize`
2025-02-16 09:30:19 -07:00
Cucumberrbob
9299314b14
Log when rejecting files in TB GetDownloadLinks 2025-02-13 11:50:40 +00:00
Cucumberrbob
e5e64e6946
Include torrent in logs when rejecting files in PM GetDownloadLinks 2025-02-13 11:41:41 +00:00
Roger Far
56c25770c3 Cleanup. 2025-02-12 20:27:29 -07:00
Roger Far
c005bda484
Merge branch 'master' into pr-main-repo 2025-02-12 20:24:54 -07:00
Roger Far
f58b7d3e72 Refactored TorrentClientKind to Provider. Upgrade Downloader.NET 2025-02-12 20:24:22 -07:00
Roger Far
780d0e5118 Add fixes for AllDebrid and their new API. 2025-02-12 19:48:48 -07:00
Cucumberrbob
26f1f26cd1
Ensure MinDownloadSize, IncludeRegex and ExcludeRegex are honoured by TorBoxTorrentClient 2025-02-07 14:43:59 +00:00
Cucumberrbob
9e223de32e
Ensure MinDownloadSize, IncludeRegex and ExcludeRegex are honoured by PremiumizeTorrentClient 2025-02-07 14:40:13 +00:00
Wald764
f1bdc7d8b4 ♻️ fix a reference to RD instead of DL in DebridLinkTorrentClient 2025-02-03 00:49:36 +01:00
Cucumberrbob
48766e3d44 🐛 Fix build errors by not using Torrent = in DebridLinkTorrentClient
use `Data.Models.Data.Torrent`instead of `Torrent` and `Download = RdtClient.Data.Models.Torrent`
2025-02-03 00:25:02 +01:00
Cucumberrbob
56a61ad012 Use exact path for symlink source when using SymlinkDownloader 2025-02-02 22:11:26 +01:00
Wald764
303244127b ♻️ fix typo in Torrents.cs 2025-02-02 17:50:51 +01:00
Wald764
20fbf8833a ♻️ rename occurrences of debridlinkfr to debridlink 2025-02-02 17:19:41 +01:00
Wald764
d6d1813340 🐛 implement PR suggestions 2025-02-02 17:10:41 +01:00
Wald764
7902f56d66 🐛 endpoint /seedbox/cached removed by DebridLink 2025-02-02 16:46:35 +01:00
Wald764
4198b6ab55 🐛 fixes about the providers order and addition of GetFileName to DebridLinkFrTorrentClient 2025-02-02 16:26:46 +01:00
Wald764
59c47bfe1a 🎉 add support of DebridLinkFr 2025-01-31 10:07:29 +01:00
Roger Far
dc2ec486d7 no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-01-29 19:13:43 -07:00
Roger Far
a566f47988 Set the download client based on the torrent instead of hardcoded when upload a torrent from the web GUI. 2025-01-29 19:10:14 -07:00
Roger Far
24c759e4e6 Small fixes in the download client. 2025-01-29 19:03:38 -07:00
Roger Far
ef8142453f
Merge branch 'master' into fix/bad-download-path 2025-01-29 18:59:31 -07:00
Roger Far
f379d4efb8 DownloadStation cleanup. 2025-01-29 18:55:24 -07:00