feat(cli): Added sonarr support for listing downloads, listing quality profiles, and fetching detailed information about an episode
This commit is contained in:
@@ -56,6 +56,12 @@ pub struct DownloadRecord {
|
||||
pub download_client: String,
|
||||
}
|
||||
|
||||
#[derive(Default, Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct DownloadsResponse {
|
||||
pub records: Vec<DownloadRecord>,
|
||||
}
|
||||
|
||||
#[derive(Default, Serialize, Deserialize, Hash, Debug, Clone, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Episode {
|
||||
@@ -321,6 +327,7 @@ impl SeriesStatus {
|
||||
#[allow(clippy::large_enum_variant)]
|
||||
pub enum SonarrSerdeable {
|
||||
Value(Value),
|
||||
DownloadsResponse(DownloadsResponse),
|
||||
Episode(Episode),
|
||||
Episodes(Vec<Episode>),
|
||||
QualityProfiles(Vec<QualityProfile>),
|
||||
@@ -345,6 +352,7 @@ impl From<()> for SonarrSerdeable {
|
||||
serde_enum_from!(
|
||||
SonarrSerdeable {
|
||||
Value(Value),
|
||||
DownloadsResponse(DownloadsResponse),
|
||||
Episode(Episode),
|
||||
Episodes(Vec<Episode>),
|
||||
QualityProfiles(Vec<QualityProfile>),
|
||||
|
||||
@@ -5,8 +5,8 @@ mod tests {
|
||||
|
||||
use crate::models::{
|
||||
sonarr_models::{
|
||||
BlocklistItem, BlocklistResponse, Episode, Log, LogResponse, QualityProfile, Series,
|
||||
SeriesStatus, SeriesType, SonarrSerdeable, SystemStatus,
|
||||
BlocklistItem, BlocklistResponse, DownloadRecord, DownloadsResponse, Episode, Log,
|
||||
LogResponse, QualityProfile, Series, SeriesStatus, SeriesType, SonarrSerdeable, SystemStatus,
|
||||
},
|
||||
Serdeable,
|
||||
};
|
||||
@@ -145,6 +145,22 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_sonarr_serdeable_from_downloads_response() {
|
||||
let downloads_response = DownloadsResponse {
|
||||
records: vec![DownloadRecord {
|
||||
id: 1,
|
||||
..DownloadRecord::default()
|
||||
}],
|
||||
};
|
||||
let sonarr_serdeable: SonarrSerdeable = downloads_response.clone().into();
|
||||
|
||||
assert_eq!(
|
||||
sonarr_serdeable,
|
||||
SonarrSerdeable::DownloadsResponse(downloads_response)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_sonarr_serdeable_from_log_response() {
|
||||
let log_response = LogResponse {
|
||||
|
||||
Reference in New Issue
Block a user