Completed initial implementation of logs, events, and tasks

This commit is contained in:
2023-08-08 10:50:06 -06:00
parent 519778c0ca
commit 460efb2497
16 changed files with 304 additions and 42 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ mod tests {
app.is_loading = true;
let radarr_config = RadarrConfig {
host,
api_token: String::default(),
api_token: String::new(),
port,
};
app.config.radarr = radarr_config;
+25 -4
View File
@@ -10,9 +10,9 @@ use crate::app::radarr::ActiveRadarrBlock;
use crate::app::RadarrConfig;
use crate::models::radarr_models::{
AddMovieBody, AddMovieSearchResult, AddOptions, AddRootFolderBody, Collection, CollectionMovie,
CommandBody, Credit, CreditType, DiskSpace, DownloadRecord, DownloadsResponse, LogResponse,
Movie, MovieCommandBody, MovieHistoryItem, QualityProfile, Release, ReleaseDownloadBody,
RootFolder, SystemStatus, Tag, Task,
CommandBody, Credit, CreditType, DiskSpace, DownloadRecord, DownloadsResponse, Event,
LogResponse, Movie, MovieCommandBody, MovieHistoryItem, QualityProfile, Release,
ReleaseDownloadBody, RootFolder, SystemStatus, Tag, Task,
};
use crate::models::{Route, Scrollable, ScrollableText};
use crate::network::{Network, NetworkEvent, RequestMethod, RequestProps};
@@ -34,6 +34,7 @@ pub enum RadarrEvent {
EditCollection,
GetCollections,
GetDownloads,
GetEvents,
GetLogs,
GetMovieCredits,
GetMovieDetails,
@@ -78,7 +79,8 @@ impl RadarrEvent {
RadarrEvent::GetStatus => "/system/status",
RadarrEvent::GetTags => "/tag",
RadarrEvent::GetTasks => "/system/task",
RadarrEvent::TriggerAutomaticSearch
RadarrEvent::GetEvents
| RadarrEvent::TriggerAutomaticSearch
| RadarrEvent::UpdateAndScan
| RadarrEvent::UpdateAllMovies
| RadarrEvent::UpdateDownloads
@@ -107,6 +109,7 @@ impl<'a, 'b> Network<'a, 'b> {
RadarrEvent::EditCollection => self.edit_collection().await,
RadarrEvent::GetCollections => self.get_collections().await,
RadarrEvent::GetDownloads => self.get_downloads().await,
RadarrEvent::GetEvents => self.get_events().await,
RadarrEvent::GetLogs => self.get_logs().await,
RadarrEvent::GetMovieCredits => self.get_credits().await,
RadarrEvent::GetMovieDetails => self.get_movie_details().await,
@@ -601,6 +604,24 @@ impl<'a, 'b> Network<'a, 'b> {
.await
}
async fn get_events(&self) {
info!("Fetching Radarr events");
let request_props = self
.radarr_request_props_from(
RadarrEvent::GetEvents.resource(),
RequestMethod::Get,
None::<()>,
)
.await;
self
.handle_request::<(), Vec<Event>>(request_props, |events_vec, mut app| {
app.data.radarr_data.events.set_items(events_vec);
})
.await;
}
async fn get_quality_profiles(&self) {
info!("Fetching Radarr quality profiles");
+42
View File
@@ -826,6 +826,48 @@ mod test {
);
}
#[tokio::test]
async fn test_handle_get_events_event() {
let events_json = json!([{
"name": "RefreshMonitoredDownloads",
"commandName": "Refresh Monitored Downloads",
"status": "completed",
"queued": "2023-05-20T21:29:16Z",
"started": "2023-05-20T21:29:16Z",
"ended": "2023-05-20T21:29:16Z",
"duration": "00:00:00.5111547",
"trigger": "scheduled",
}]);
let timestamp = DateTime::from(DateTime::parse_from_rfc3339("2023-05-20T21:29:16Z").unwrap());
let expected_event = Event {
name: "RefreshMonitoredDownloads".to_owned(),
command_name: "Refresh Monitored Downloads".to_owned(),
status: "completed".to_owned(),
queued: timestamp,
started: Some(timestamp),
ended: Some(timestamp),
duration: "00:00:00.5111547".to_owned(),
trigger: "scheduled".to_owned(),
};
let (async_server, app_arc, _server) = mock_radarr_api(
RequestMethod::Get,
None,
Some(events_json),
RadarrEvent::GetEvents.resource(),
)
.await;
let network = Network::new(reqwest::Client::new(), &app_arc);
network.handle_radarr_event(RadarrEvent::GetEvents).await;
async_server.assert_async().await;
assert_eq!(
app_arc.lock().await.data.radarr_data.events.items,
vec![expected_event]
);
}
#[tokio::test]
async fn test_handle_get_logs_event() {
let resource = format!(