feat(network): Support for fetching all Sonarr language profiles

This commit is contained in:
2024-11-24 11:34:09 -07:00
parent c8a2fea9cd
commit 5ed278ec9c
12 changed files with 311 additions and 60 deletions
+26 -2
View File
@@ -14,8 +14,8 @@ use crate::{
},
},
servarr_models::{
AddRootFolderBody, CommandBody, DiskSpace, HostConfig, Indexer, LogResponse, QualityProfile,
QueueEvent, RootFolder, SecurityConfig, Tag, Update,
AddRootFolderBody, CommandBody, DiskSpace, HostConfig, Indexer, Language, LogResponse,
QualityProfile, QueueEvent, RootFolder, SecurityConfig, Tag, Update,
},
sonarr_models::{
BlocklistResponse, DeleteSeriesParams, DownloadRecord, DownloadsResponse, Episode,
@@ -56,6 +56,7 @@ pub enum SonarrEvent {
GetEpisodeDetails(Option<i64>),
GetEpisodes(Option<i64>),
GetEpisodeHistory(Option<i64>),
GetLanguageProfiles,
GetLogs(Option<u64>),
GetDiskSpace,
GetQualityProfiles,
@@ -98,6 +99,7 @@ impl NetworkResource for SonarrEvent {
SonarrEvent::GetHistory(_) | SonarrEvent::GetEpisodeHistory(_) => "/history",
SonarrEvent::GetHostConfig | SonarrEvent::GetSecurityConfig => "/config/host",
SonarrEvent::GetIndexers | SonarrEvent::DeleteIndexer(_) => "/indexer",
SonarrEvent::GetLanguageProfiles => "/languageprofile",
SonarrEvent::GetLogs(_) => "/log",
SonarrEvent::GetDiskSpace => "/diskspace",
SonarrEvent::GetQualityProfiles => "/qualityprofile",
@@ -203,6 +205,10 @@ impl<'a, 'b> Network<'a, 'b> {
.await
.map(SonarrSerdeable::from),
SonarrEvent::GetIndexers => self.get_sonarr_indexers().await.map(SonarrSerdeable::from),
SonarrEvent::GetLanguageProfiles => self
.get_sonarr_language_profiles()
.await
.map(SonarrSerdeable::from),
SonarrEvent::GetLogs(events) => self
.get_sonarr_logs(events)
.await
@@ -951,6 +957,24 @@ impl<'a, 'b> Network<'a, 'b> {
.await
}
async fn get_sonarr_language_profiles(&mut self) -> Result<Vec<Language>> {
info!("Fetching Sonarr language profiles");
let event = SonarrEvent::GetLanguageProfiles;
let request_props = self
.request_props_from(event, RequestMethod::Get, None::<()>, None, None)
.await;
self
.handle_request::<(), Vec<Language>>(request_props, |language_profiles_vec, mut app| {
app.data.sonarr_data.language_profiles_map = language_profiles_vec
.into_iter()
.map(|language| (language.id, language.name))
.collect();
})
.await
}
async fn get_sonarr_logs(&mut self, events: Option<u64>) -> Result<LogResponse> {
info!("Fetching Sonarr logs");
let event = SonarrEvent::GetLogs(events);