feat(network): Support for editing all sonarr indexer settings

This commit is contained in:
2024-11-25 13:58:34 -07:00
parent 45542cd3a9
commit 1e3141e4ee
4 changed files with 144 additions and 6 deletions
+45 -1
View File
@@ -49,6 +49,7 @@ pub enum SonarrEvent {
DeleteSeries(Option<DeleteSeriesParams>),
DeleteTag(i64),
DownloadRelease(SonarrReleaseDownloadBody),
EditAllIndexerSettings(Option<IndexerSettings>),
GetAllIndexerSettings,
GetBlocklist,
GetDownloads,
@@ -95,7 +96,9 @@ impl NetworkResource for SonarrEvent {
SonarrEvent::ClearBlocklist => "/blocklist/bulk",
SonarrEvent::DownloadRelease(_) => "/release",
SonarrEvent::DeleteBlocklistItem(_) => "/blocklist",
SonarrEvent::GetAllIndexerSettings => "/config/indexer",
SonarrEvent::GetAllIndexerSettings | SonarrEvent::EditAllIndexerSettings(_) => {
"/config/indexer"
}
SonarrEvent::GetBlocklist => "/blocklist?page=1&pageSize=10000",
SonarrEvent::GetDownloads | SonarrEvent::DeleteDownload(_) => "/queue",
SonarrEvent::GetEpisodes(_) | SonarrEvent::GetEpisodeDetails(_) => "/episode",
@@ -191,6 +194,10 @@ impl<'a, 'b> Network<'a, 'b> {
.download_sonarr_release(sonarr_release_download_body)
.await
.map(SonarrSerdeable::from),
SonarrEvent::EditAllIndexerSettings(params) => self
.edit_all_sonarr_indexer_settings(params)
.await
.map(SonarrSerdeable::from),
SonarrEvent::GetBlocklist => self.get_sonarr_blocklist().await.map(SonarrSerdeable::from),
SonarrEvent::GetDownloads => self.get_sonarr_downloads().await.map(SonarrSerdeable::from),
SonarrEvent::GetEpisodes(series_id) => self
@@ -714,6 +721,43 @@ impl<'a, 'b> Network<'a, 'b> {
.await
}
async fn edit_all_sonarr_indexer_settings(
&mut self,
params: Option<IndexerSettings>,
) -> Result<Value> {
info!("Updating Sonarr indexer settings");
let event = SonarrEvent::EditAllIndexerSettings(None);
let body = if let Some(indexer_settings) = params {
indexer_settings
} else {
self
.app
.lock()
.await
.data
.sonarr_data
.indexer_settings
.as_ref()
.unwrap()
.clone()
};
debug!("Indexer settings body: {body:?}");
let request_props = self
.request_props_from(event, RequestMethod::Put, Some(body), None, None)
.await;
let resp = self
.handle_request::<IndexerSettings, Value>(request_props, |_, _| {})
.await;
self.app.lock().await.data.sonarr_data.indexer_settings = None;
resp
}
async fn get_all_sonarr_indexer_settings(&mut self) -> Result<IndexerSettings> {
info!("Fetching Sonarr indexer settings");
let event = SonarrEvent::GetAllIndexerSettings;