feat: add rtorrent client via PDCA
Some checks failed
Build and Push Docker Image / build (push) Failing after 40s
CI / Security audit (push) Failing after 27s
CI / Tests & coverage (push) Failing after 35s
Docs Check / Markdown lint (push) Successful in 32s
Docs Check / Mermaid diagram parse check (push) Successful in 1m12s
Licence Check / Licence compatibility and copyright header verification (push) Failing after 24s
Some checks failed
Build and Push Docker Image / build (push) Failing after 40s
CI / Security audit (push) Failing after 27s
CI / Tests & coverage (push) Failing after 35s
Docs Check / Markdown lint (push) Successful in 32s
Docs Check / Mermaid diagram parse check (push) Successful in 1m12s
Licence Check / Licence compatibility and copyright header verification (push) Failing after 24s
- Implement RTorrentClient extending DownloadClient abstract class - Use xmlrpc package (v1.3.2) for XML-RPC communication - Support HTTP Basic Auth when credentials are configured - Map rTorrent states (d.state, d.is_active, d.is_hash_checking) to normalized statuses - Calculate ETA from download speed and remaining bytes - Add getRtorrentInstances() to config.js - Register RTorrentClient in downloadClients.js registry - Add 8 comprehensive unit tests covering all functionality - Update .env.sample with rtorrent configuration examples - Update ARCHITECTURE.md with rtorrent client details - Update ADDING-A-DOWNLOAD-CLIENT.md with rtorrent-specific notes
This commit is contained in:
@@ -346,6 +346,18 @@ For a complete example, refer to the existing client implementations:
|
||||
- **SABnzbdClient.js**: Simple REST API client
|
||||
- **QBittorrentClient.js**: Complex client with sync API and fallback
|
||||
- **TransmissionClient.js**: JSON-RPC client with session management
|
||||
- **RTorrentClient.js**: XML-RPC client with HTTP Basic Auth
|
||||
|
||||
### rTorrent Specific Notes
|
||||
|
||||
rTorrent uses XML-RPC over HTTP with the following specifics:
|
||||
|
||||
- **Endpoint**: `${url}/RPC2` (most common)
|
||||
- **Authentication**: HTTP Basic Auth (handled by reverse proxy or web server)
|
||||
- **Primary Method**: `d.multicall2` for efficient bulk torrent data retrieval
|
||||
- **Library**: Uses the `xmlrpc` package (v1.3.2)
|
||||
- **Status Mapping**: Combines `d.state`, `d.is_active`, and `d.is_hash_checking` to determine status
|
||||
- **ETA Calculation**: Computed from download speed and remaining bytes when actively downloading
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
|
||||
Reference in New Issue
Block a user