-
Notifications
You must be signed in to change notification settings - Fork 70
/
Copy pathkodi.rs
39 lines (36 loc) · 1.35 KB
/
kodi.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use anyhow::{bail, Result};
use dependent_models::{ImportCompletedItem, ImportResult};
use enum_models::{MediaLot, MediaSource};
use media_models::{ImportOrExportMetadataItem, ImportOrExportMetadataItemSeen};
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
struct IntegrationMediaSeen {
identifier: String,
lot: MediaLot,
progress: Decimal,
show_season_number: Option<i32>,
show_episode_number: Option<i32>,
}
pub async fn sink_progress(payload: String) -> Result<ImportResult> {
let payload = match serde_json::from_str::<IntegrationMediaSeen>(&payload) {
Ok(val) => val,
Err(err) => bail!(err),
};
Ok(ImportResult {
completed: vec![ImportCompletedItem::Metadata(ImportOrExportMetadataItem {
lot: payload.lot,
source: MediaSource::Tmdb,
identifier: payload.identifier,
seen_history: vec![ImportOrExportMetadataItemSeen {
progress: Some(payload.progress),
provider_watched_on: Some("Kodi".to_string()),
show_season_number: payload.show_season_number,
show_episode_number: payload.show_episode_number,
..Default::default()
}],
..Default::default()
})],
..Default::default()
})
}