private ValidationFailure TestConnection() { try { var version = _proxySelector.GetProxy(Settings, true).GetApiVersion(Settings); if (version < Version.Parse("1.5")) { // API version 5 introduced the "save_path" property in /query/torrents return(new NzbDroneValidationFailure("Host", "Unsupported client version") { DetailedDescription = "Please upgrade to qBittorrent version 3.2.4 or higher." }); } else if (version < Version.Parse("1.6")) { // API version 6 introduced support for labels if (Settings.MovieCategory.IsNotNullOrWhiteSpace()) { return(new NzbDroneValidationFailure("Category", "Category is not supported") { DetailedDescription = "Labels are not supported until qBittorrent version 3.3.0. Please upgrade or try again with an empty Category." }); } } else if (Settings.MovieCategory.IsNullOrWhiteSpace()) { // warn if labels are supported, but category is not provided return(new NzbDroneValidationFailure("MovieCategory", "Category is recommended") { IsWarning = true, DetailedDescription = "Radarr will not attempt to import completed downloads without a category." }); } // Complain if qBittorrent is configured to remove torrents on max ratio var config = Proxy.GetConfig(Settings); if ((config.MaxRatioEnabled || config.MaxSeedingTimeEnabled) && (config.MaxRatioAction == QBittorrentMaxRatioAction.Remove || config.MaxRatioAction == QBittorrentMaxRatioAction.DeleteFiles)) { return(new NzbDroneValidationFailure(string.Empty, "qBittorrent is configured to remove torrents when they reach their Share Ratio Limit") { DetailedDescription = "Radarr will be unable to perform Completed Download Handling as configured. You can fix this in qBittorrent ('Tools -> Options...' in the menu) by changing 'Options -> BitTorrent -> Share Ratio Limiting' from 'Remove them' to 'Pause them'." }); } } catch (DownloadClientAuthenticationException ex) { _logger.Error(ex, ex.Message); return(new NzbDroneValidationFailure("Username", "Authentication failure") { DetailedDescription = "Please verify your username and password." }); } catch (WebException ex) { _logger.Error(ex, "Unable to connect to qBittorrent"); if (ex.Status == WebExceptionStatus.ConnectFailure) { return(new NzbDroneValidationFailure("Host", "Unable to connect") { DetailedDescription = "Please verify the hostname and port." }); } return(new NzbDroneValidationFailure(string.Empty, "Unknown exception: " + ex.Message)); } catch (Exception ex) { _logger.Error(ex, "Unable to test qBittorrent"); return(new NzbDroneValidationFailure("Host", "Unable to connect to qBittorrent") { DetailedDescription = ex.Message }); } return(null); }
private ValidationFailure TestConnection() { try { var version = _proxySelector.GetProxy(Settings, true).GetApiVersion(Settings); if (version < Version.Parse("1.5")) { // API version 5 introduced the "save_path" property in /query/torrents return(new NzbDroneValidationFailure("Host", "Unsupported client version") { DetailedDescription = "Please upgrade to qBittorrent version 3.2.4 or higher." }); } else if (version < Version.Parse("1.6")) { // API version 6 introduced support for labels if (Settings.Category.IsNotNullOrWhiteSpace()) { return(new NzbDroneValidationFailure("Category", "Category is not supported") { DetailedDescription = "Labels are not supported until qBittorrent version 3.3.0. Please upgrade or try again with an empty Category." }); } } else if (Settings.Category.IsNullOrWhiteSpace()) { // warn if labels are supported, but category is not provided return(new NzbDroneValidationFailure("Category", "Category is recommended") { IsWarning = true, DetailedDescription = "Prowlarr will not attempt to import completed downloads without a category." }); } } catch (DownloadClientAuthenticationException ex) { _logger.Error(ex, ex.Message); return(new NzbDroneValidationFailure("Username", "Authentication failure") { DetailedDescription = "Please verify your username and password." }); } catch (WebException ex) { _logger.Error(ex, "Unable to connect to qBittorrent"); if (ex.Status == WebExceptionStatus.ConnectFailure) { return(new NzbDroneValidationFailure("Host", "Unable to connect") { DetailedDescription = "Please verify the hostname and port." }); } return(new NzbDroneValidationFailure(string.Empty, "Unknown exception: " + ex.Message)); } catch (Exception ex) { _logger.Error(ex, "Unable to test qBittorrent"); return(new NzbDroneValidationFailure("Host", "Unable to connect to qBittorrent") { DetailedDescription = ex.Message }); } return(null); }