Completed initial implementation of logs, events, and tasks
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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!(
|
||||
|
||||
Reference in New Issue
Block a user