plex_api/myplex/sharing/
server.rs

1use super::{friend::Friend, SharingFilter};
2use crate::media_container::users::AllowTuners;
3use serde::{Deserialize, Serialize};
4use time::OffsetDateTime;
5
6#[derive(Serialize, Deserialize, Debug, Clone)]
7#[serde(rename_all = "camelCase")]
8#[cfg_attr(feature = "tests_deny_unknown_fields", serde(deny_unknown_fields))]
9pub struct Settings {
10    pub allow_channels: bool,
11    pub allow_subtitle_admin: bool,
12    pub allow_sync: bool,
13    pub allow_camera_upload: bool,
14    pub allow_tuners: AllowTuners,
15    pub filter_movies: Option<SharingFilter>,
16    pub filter_music: Option<SharingFilter>,
17    pub filter_television: Option<SharingFilter>,
18    pub filter_photos: Option<SharingFilter>,
19    pub filter_all: Option<SharingFilter>,
20}
21
22impl Default for Settings {
23    fn default() -> Self {
24        Self {
25            allow_channels: Default::default(),
26            allow_subtitle_admin: Default::default(),
27            allow_sync: Default::default(),
28            allow_tuners: AllowTuners::AllowLiveTvAndDvr,
29            allow_camera_upload: Default::default(),
30            filter_movies: Default::default(),
31            filter_music: Default::default(),
32            filter_television: Default::default(),
33            filter_photos: Default::default(),
34            filter_all: Default::default(),
35        }
36    }
37}
38
39#[derive(Serialize, Deserialize, Debug, Clone)]
40#[serde(rename_all = "camelCase")]
41#[cfg_attr(feature = "tests_deny_unknown_fields", serde(deny_unknown_fields))]
42pub struct SharedServer {
43    pub id: u32,
44    pub name: String,
45    pub owner_id: u32,
46    pub invited_id: u32,
47    pub invited_email: Option<String>,
48    pub server_id: u32,
49    pub accepted: bool,
50    #[serde(with = "time::serde::rfc3339::option")]
51    pub accepted_at: Option<OffsetDateTime>,
52    #[serde(with = "time::serde::rfc3339::option")]
53    pub deleted_at: Option<OffsetDateTime>,
54    #[serde(with = "time::serde::rfc3339::option")]
55    pub left_at: Option<OffsetDateTime>,
56    pub owned: bool,
57    pub invite_token: Option<String>,
58    pub machine_identifier: String,
59    #[serde(with = "time::serde::rfc3339::option")]
60    pub last_seen_at: Option<OffsetDateTime>,
61    pub num_libraries: u16,
62    pub sharing_settings: Settings,
63    pub libraries: Vec<crate::myplex::server::LibrarySection>,
64    pub all_libraries: bool,
65    pub invited: Option<Friend>,
66}