torrent-man/modules/transmission-client.js
Claude 9e544456db Initial commit with UI fixes for dark mode
This repository contains Transmission RSS Manager with the following changes:
- Fixed dark mode navigation tab visibility issue
- Improved text contrast in dark mode throughout the app
- Created dedicated dark-mode.css for better organization
- Enhanced JavaScript for dynamic styling in dark mode
- Added complete installation scripts

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-13 17:16:41 +00:00

114 lines
2.5 KiB
JavaScript

// Transmission client module for Transmission RSS Manager
// This is a basic implementation that will be extended during installation
const Transmission = require('transmission');
class TransmissionClient {
constructor(config) {
this.config = config;
this.client = new Transmission({
host: config.host || 'localhost',
port: config.port || 9091,
username: config.username || '',
password: config.password || '',
url: config.path || '/transmission/rpc'
});
}
// Get all torrents
getTorrents() {
return new Promise((resolve, reject) => {
this.client.get((err, result) => {
if (err) {
reject(err);
} else {
resolve(result.torrents || []);
}
});
});
}
// Add a torrent
addTorrent(url) {
return new Promise((resolve, reject) => {
this.client.addUrl(url, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
}
// Remove a torrent
removeTorrent(id, deleteLocalData = false) {
return new Promise((resolve, reject) => {
this.client.remove(id, deleteLocalData, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
}
// Start a torrent
startTorrent(id) {
return new Promise((resolve, reject) => {
this.client.start(id, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
}
// Stop a torrent
stopTorrent(id) {
return new Promise((resolve, reject) => {
this.client.stop(id, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
}
// Get torrent details
getTorrentDetails(id) {
return new Promise((resolve, reject) => {
this.client.get(id, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result.torrents && result.torrents.length > 0 ? result.torrents[0] : null);
}
});
});
}
// Test connection to Transmission
testConnection() {
return new Promise((resolve, reject) => {
this.client.sessionStats((err, result) => {
if (err) {
reject(err);
} else {
resolve({
connected: true,
version: result.version,
rpcVersion: result.rpcVersion
});
}
});
});
}
}
module.exports = TransmissionClient;