Skip to content

Add rTorrent support#446

Merged
Flaminel merged 9 commits intomainfrom
add_rtorrent_support
Feb 22, 2026
Merged

Add rTorrent support#446
Flaminel merged 9 commits intomainfrom
add_rtorrent_support

Conversation

@Flaminel
Copy link
Contributor

Relates to #180

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds rTorrent/ruTorrent support to Cleanuparr, implementing a new download client option alongside the existing qBittorrent, Deluge, Transmission, and µTorrent clients. The implementation includes a custom XML-RPC client for communicating with rTorrent since it doesn't have a native .NET library.

Changes:

  • Added complete rTorrent client implementation with XML-RPC communication layer
  • Refactored DeleteDownload method signature across all download clients from hash-based to object-based deletion
  • Added SavePath property to ITorrentItemWrapper interface for file path resolution
  • Updated frontend UI to support rTorrent-specific configuration (authentication, URL base hints)

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
docs/docs/configuration/download-client/index.mdx Added rTorrent to supported clients list and documented XML-RPC endpoint configuration
code/frontend/src/app/shared/models/enums.ts Added rTorrent enum value to DownloadClientTypeName
code/frontend/src/app/features/settings/download-clients/download-clients.component.ts Added UI logic to hide username/password fields for rTorrent and set default URL base
code/frontend/src/app/features/settings/download-clients/download-clients.component.html Conditionally show/hide password field based on client type
code/backend/Cleanuparr.Domain/Enums/DownloadClientTypeName.cs Added rTorrent to backend enum
code/backend/Cleanuparr.Domain/Entities/RTorrent/Response/*.cs Defined RTorrentTorrent and RTorrentFile response entities
code/backend/Cleanuparr.Domain/Exceptions/RTorrentClientException.cs Custom exception for rTorrent client errors
code/backend/Cleanuparr.Domain/Entities/ITorrentItemWrapper.cs Added SavePath property to interface
code/backend/Cleanuparr.Infrastructure/Features/DownloadClient/RTorrent/*.cs Complete rTorrent service implementation including XML-RPC client, service logic, and wrapper classes
code/backend/Cleanuparr.Infrastructure/Features/DownloadClient/IDownloadService.cs Changed DeleteDownload signature to accept ITorrentItemWrapper instead of hash
code/backend/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadService.cs Added TryDeleteFiles helper method and updated DeleteDownload method signature
code/backend/Cleanuparr.Infrastructure/Features/DownloadClient/*/.*ItemWrapper.cs Added SavePath property implementations (some throw NotImplementedException)
code/backend/Cleanuparr.Infrastructure/Features/DownloadClient/Service.cs Updated DeleteDownload implementations for all clients
code/backend/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadServiceFactory.cs Added factory method for creating RTorrentService instances
code/backend/Cleanuparr.Api/DependencyInjection/MainDI.cs Changed MassTransit concurrent message limits from 2 to 1
code/backend/Cleanuparr.Infrastructure.Tests/Features/DownloadClient/RTorrent*.cs Comprehensive test suite for rTorrent functionality
code/backend/Cleanuparr.Infrastructure.Tests/Features/DownloadClient/*ServiceDCTests.cs Updated tests to use new DeleteDownload signature

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Flaminel Flaminel merged commit e1cc0db into main Feb 22, 2026
7 of 8 checks passed
@Flaminel Flaminel deleted the add_rtorrent_support branch February 22, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants