plex_api/myplex/sharing/
server.rs1use 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}