diff --git a/server/RdtClient.Web/Controllers/QBittorrentController.cs b/server/RdtClient.Web/Controllers/QBittorrentController.cs index ba1edff..d2a9f64 100644 --- a/server/RdtClient.Web/Controllers/QBittorrentController.cs +++ b/server/RdtClient.Web/Controllers/QBittorrentController.cs @@ -159,6 +159,11 @@ public class QBittorrentController(ILogger logger, QBitto { var results = await qBittorrent.TorrentInfo(); + if(!String.IsNullOrWhiteSpace(request.Filter)) + { + results = results.Where(m => m.State != null && m.State.Equals(request.Filter, StringComparison.OrdinalIgnoreCase)).ToList(); + } + if (!String.IsNullOrWhiteSpace(request.Category)) { results = results.Where(m => m.Category == request.Category).ToList(); @@ -178,11 +183,34 @@ public class QBittorrentController(ILogger logger, QBitto [Authorize(Policy = "AuthSetting")] [Route("torrents/info")] [HttpPost] - public async Task>> TorrentsFilesPost([FromForm] QBTorrentsInfoRequest request) + public async Task>> TorrentsInfoPost([FromForm] QBTorrentsInfoRequest request) { return await TorrentsInfo(request); } + [Authorize(Policy = "AuthSetting")] + [Route("torrents/count")] + [HttpGet] + [HttpPost] + public async Task> TorrentsCount([FromQuery] QBTorrentsCountRequest request) + { + var results = await qBittorrent.TorrentInfo(); + + if (!String.IsNullOrWhiteSpace(request.Filter)) + { + results = results.Where(m => m.State != null && m.State.Equals(request.Filter, StringComparison.OrdinalIgnoreCase)).ToList(); + } + return results.Count; + } + + [Authorize(Policy = "AuthSetting")] + [Route("torrents/count")] + [HttpPost] + public async Task> TorrentsCountPost([FromForm] QBTorrentsCountRequest request) + { + return await TorrentsCount(request); + } + [Authorize(Policy = "AuthSetting")] [Route("torrents/files")] [HttpGet] @@ -611,10 +639,17 @@ public class QBAuthLoginRequest public class QBTorrentsInfoRequest { + public String? Filter { get; set; } public String? Category { get; set; } public String? Hashes { get; set; } } + +public class QBTorrentsCountRequest +{ + public String? Filter { get; set; } +} + public class QBTorrentsHashRequest { public String? Hash { get; set; }