Esempio n. 1
0
        public static void SetRadarr(MoviesSettings movieSettings, RadarrSettingsModel radarrSettings)
        {
            SettingsFile.Write(settings =>
            {
                settings.DownloadClients.Radarr.Hostname = radarrSettings.Hostname;
                settings.DownloadClients.Radarr.Port     = radarrSettings.Port;
                settings.DownloadClients.Radarr.ApiKey   = radarrSettings.ApiKey;
                settings.DownloadClients.Radarr.BaseUrl  = radarrSettings.BaseUrl;

                settings.DownloadClients.Radarr.Categories = JToken.FromObject(radarrSettings.Categories.Select(x => new RadarrCategory
                {
                    Id   = x.Id,
                    Name = x.Name,
                    MinimumAvailability = x.MinimumAvailability,
                    ProfileId           = x.ProfileId,
                    RootFolder          = x.RootFolder,
                    Tags = x.Tags
                }).ToArray());

                settings.DownloadClients.Radarr.SearchNewRequests  = radarrSettings.SearchNewRequests;
                settings.DownloadClients.Radarr.MonitorNewRequests = radarrSettings.MonitorNewRequests;

                settings.DownloadClients.Radarr.UseSSL  = radarrSettings.UseSSL;
                settings.DownloadClients.Radarr.Version = radarrSettings.Version;

                if (settings.Movies.Client != movieSettings.Client)
                {
                    NotificationsFile.ClearAllMovieNotifications();
                }

                SetMovieSettings(movieSettings, settings);
            });
        }
Esempio n. 2
0
        public async Task <IActionResult> SaveAsync([FromBody] SaveRadarrSettingsModel model)
        {
            var movieSettings = new MoviesSettings
            {
                Client  = DownloadClient.Radarr,
                Command = model.Command.Trim()
            };

            var radarrSetting = new RadarrSettings
            {
                Hostname             = model.Hostname.Trim(),
                ApiKey               = model.ApiKey.Trim(),
                Port                 = model.Port,
                MoviePath            = model.MoviePath,
                MovieProfile         = model.MovieProfile,
                MovieMinAvailability = model.MovieMinAvailability,
                MovieTags            = model.MovieTags ?? Array.Empty <int>(),
                AnimePath            = model.AnimePath,
                AnimeProfile         = model.AnimeProfile,
                AnimeMinAvailability = model.AnimeMinAvailability,
                AnimeTags            = model.AnimeTags ?? Array.Empty <int>(),
                UseSSL               = model.UseSSL,
                Version              = model.Version
            };

            DownloadClientsSettingsRepository.SetRadarr(movieSettings, radarrSetting);

            return(Ok(new { ok = true }));
        }
 public static void SetDisabledClient(MoviesSettings movieSettings)
 {
     SettingsFile.Write(settings =>
     {
         settings.Movies.Client = movieSettings.Client;
     });
 }
        public static void SetRadarr(MoviesSettings movieSettings, RadarrSettingsModel radarrSettings)
        {
            SettingsFile.Write(settings =>
            {
                settings.DownloadClients.Radarr.Hostname = radarrSettings.Hostname;
                settings.DownloadClients.Radarr.Port     = radarrSettings.Port;
                settings.DownloadClients.Radarr.ApiKey   = radarrSettings.ApiKey;
                settings.DownloadClients.Radarr.BaseUrl  = radarrSettings.BaseUrl;

                settings.DownloadClients.Radarr.MovieProfileId           = radarrSettings.MovieProfile;
                settings.DownloadClients.Radarr.MovieRootFolder          = radarrSettings.MoviePath;
                settings.DownloadClients.Radarr.MovieMinimumAvailability = radarrSettings.MovieMinAvailability;
                settings.DownloadClients.Radarr.MovieTags = JToken.FromObject(radarrSettings.MovieTags);

                settings.DownloadClients.Radarr.AnimeProfileId           = radarrSettings.AnimeProfile;
                settings.DownloadClients.Radarr.AnimeRootFolder          = radarrSettings.AnimePath;
                settings.DownloadClients.Radarr.AnimeMinimumAvailability = radarrSettings.AnimeMinAvailability;
                settings.DownloadClients.Radarr.AnimeTags = JToken.FromObject(radarrSettings.AnimeTags);

                settings.DownloadClients.Radarr.SearchNewRequests  = radarrSettings.SearchNewRequests;
                settings.DownloadClients.Radarr.MonitorNewRequests = radarrSettings.MonitorNewRequests;

                settings.DownloadClients.Radarr.UseSSL  = radarrSettings.UseSSL;
                settings.DownloadClients.Radarr.Version = radarrSettings.Version;

                settings.Movies.Client  = movieSettings.Client;
                settings.Movies.Command = movieSettings.Command;
            });
        }
 public static void SetOverseerr(MoviesSettings movieSettings, OverseerrSettingsModel overseerrSettings)
 {
     SettingsFile.Write(settings =>
     {
         SetOverseerrSettings(overseerrSettings, settings);
         SetMovieSettings(movieSettings, settings);
     });
 }
Esempio n. 6
0
 public static void SetDisabledClient(MoviesSettings movieSettings)
 {
     SettingsFile.Write(settings =>
     {
         NotificationsFile.ClearAllMovieNotifications();
         settings.Movies.Client = movieSettings.Client;
     });
 }
Esempio n. 7
0
 public static void SetOmbi(MoviesSettings movieSettings, OmbiSettingsModel ombiSettings)
 {
     SettingsFile.Write(settings =>
     {
         SetOmbiSettings(ombiSettings, settings);
         SetMovieSettings(movieSettings, settings);
     });
 }
Esempio n. 8
0
 public static void SetOverseerr(MoviesSettings movieSettings, SaveOverseerrMoviesSettingsModel overseerrSettings)
 {
     SettingsFile.Write(settings =>
     {
         SetOverseerrSettings(overseerrSettings, settings);
         settings.DownloadClients.Overseerr.Movies = JToken.FromObject(overseerrSettings.Movies);
         SetMovieSettings(movieSettings, settings);
     });
 }
Esempio n. 9
0
        private static void SetMovieSettings(MoviesSettings movieSettings, dynamic settings)
        {
            if (settings.Movies.Client != movieSettings.Client)
            {
                NotificationsFile.ClearAllMovieNotifications();
            }

            settings.Movies.Client = movieSettings.Client;
        }
Esempio n. 10
0
 public MovieDownloadClientController(
     IHttpClientFactory httpClientFactory,
     MoviesSettingsProvider moviesSettingsProvider,
     DownloadClientsSettingsProvider downloadClientsSettingsProvider)
 {
     _moviesSettings          = moviesSettingsProvider.Provide();
     _downloadClientsSettings = downloadClientsSettingsProvider.Provide();
     _httpClientFactory       = httpClientFactory;
 }
Esempio n. 11
0
 public MovieDownloadClientController(
     IHttpClientFactory httpClientFactory,
     IOptionsSnapshot <MoviesSettings> moviesSettingsAccessor,
     IOptionsSnapshot <DownloadClientsSettings> botClientsSettingsAccessor)
 {
     _moviesSettings          = moviesSettingsAccessor.Value;
     _downloadClientsSettings = botClientsSettingsAccessor.Value;
     _httpClientFactory       = httpClientFactory;
 }
        public static void SetOmbi(MoviesSettings movieSettings, OmbiSettingsModel ombiSettings)
        {
            SettingsFile.Write(settings =>
            {
                SetOmbiSettings(ombiSettings, settings);

                settings.Movies.Client  = movieSettings.Client;
                settings.Movies.Command = movieSettings.Command;
            });
        }
Esempio n. 13
0
        public async Task <IActionResult> SaveAsync([FromBody] RadarrSettingsModel model)
        {
            var movieSettings = new MoviesSettings
            {
                Client = DownloadClient.Radarr
            };

            if (!model.Categories.Any())
            {
                return(BadRequest($"At least one category is required."));
            }

            if (model.Categories.Any(x => string.IsNullOrWhiteSpace(x.Name)))
            {
                return(BadRequest($"A category name is required."));
            }

            foreach (var category in model.Categories)
            {
                category.Name = category.Name.Trim();
                category.Tags = category.Tags;
            }

            if (new HashSet <string>(model.Categories.Select(x => x.Name.ToLower())).Count != model.Categories.Length)
            {
                return(BadRequest($"All categories must have different names."));
            }

            if (new HashSet <int>(model.Categories.Select(x => x.Id)).Count != model.Categories.Length)
            {
                return(BadRequest($"All categories must have different ids."));
            }

            if (model.Categories.Any(x => !Regex.IsMatch(x.Name, @"^[\w-]{1,32}$")))
            {
                return(BadRequest($"Invalid categorie names, make sure they only contain alphanumeric characters, dashes and underscores. (No spaces, etc)"));
            }

            var radarrSetting = new RadarrSettingsModel
            {
                Hostname           = model.Hostname.Trim(),
                ApiKey             = model.ApiKey.Trim(),
                BaseUrl            = model.BaseUrl.Trim(),
                Port               = model.Port,
                Categories         = model.Categories,
                SearchNewRequests  = model.SearchNewRequests,
                MonitorNewRequests = model.MonitorNewRequests,
                UseSSL             = model.UseSSL,
                Version            = model.Version
            };

            DownloadClientsSettingsRepository.SetRadarr(movieSettings, radarrSetting);

            return(Ok(new { ok = true }));
        }
Esempio n. 14
0
        public async Task <IActionResult> SaveMoviesAsync([FromBody] SaveOmbiMoviesSettingsModel model)
        {
            var movieSettings = new MoviesSettings
            {
                Client = DownloadClient.Ombi
            };

            var ombiSettings = Sanitize(model);

            DownloadClientsSettingsRepository.SetOmbi(movieSettings, ombiSettings);

            return(Ok(new { ok = true }));
        }
Esempio n. 15
0
        public async Task <IActionResult> SaveMoviesAsync([FromBody] SaveOmbiSettingsModel model)
        {
            var movieSettings = new MoviesSettings
            {
                Client  = DownloadClient.Ombi,
                Command = model.Command.Trim(),
            };

            var ombiSettings = ConvertToOmbiSettings(model);

            DownloadClientsSettingsRepository.SetOmbi(movieSettings, ombiSettings);

            return(Ok(new { ok = true }));
        }
Esempio n. 16
0
        public async Task <IActionResult> SaveMoviesAsync([FromBody] SaveOverseerrMoviesSettingsModel model)
        {
            var movieSettings = new MoviesSettings
            {
                Client  = DownloadClient.Overseerr,
                Command = model.Command.Trim(),
            };

            var overseerrSettings = Sanitize(model);

            DownloadClientsSettingsRepository.SetOverseerr(movieSettings, overseerrSettings);

            return(Ok(new { ok = true }));
        }
Esempio n. 17
0
        public async Task <IActionResult> SaveMoviesAsync([FromBody] SaveOverseerrMoviesSettingsModel model)
        {
            var movieSettings = new MoviesSettings
            {
                Client = DownloadClient.Overseerr
            };

            Sanitize(model);

            if (model.Movies.Categories.Any(x => string.IsNullOrWhiteSpace(x.Name)))
            {
                return(BadRequest($"A category name is required."));
            }

            foreach (var category in model.Movies.Categories)
            {
                category.Name = category.Name.Trim();
                category.Tags = category.Tags;
            }

            if (new HashSet <string>(model.Movies.Categories.Select(x => x.Name.ToLower())).Count != model.Movies.Categories.Length)
            {
                return(BadRequest($"All categories must have different names."));
            }

            if (new HashSet <int>(model.Movies.Categories.Select(x => x.Id)).Count != model.Movies.Categories.Length)
            {
                return(BadRequest($"All categories must have different ids."));
            }

            if (model.Movies.Categories.Any(x => !Regex.IsMatch(x.Name, @"^[\w-]{1,32}$")))
            {
                return(BadRequest($"Invalid categorie names, make sure they only contain alphanumeric characters, dashes and underscores. (No spaces, etc)"));
            }

            DownloadClientsSettingsRepository.SetOverseerr(movieSettings, model);

            return(Ok(new { ok = true }));
        }