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
use crate::media_container::{Device, MediaContainer};
use crate::{
my_plex::{HasMyPlexToken, MyPlexAccount, MyPlexApiErrorResponse},
InternalHttpApi,
};
use reqwest::StatusCode;
use serde_xml_rs;
const DEVICES_URL: &str = "devices.xml";
impl MyPlexAccount {
pub fn get_devices(&self) -> crate::Result<Vec<Device>> {
let mut response = self.get(DEVICES_URL)?;
if response.status() == StatusCode::OK {
let mc: MediaContainer = serde_xml_rs::from_str(response.text()?.as_str())?;
let mut devices: Vec<Device> = mc.get_devices().unwrap_or_default();
devices
.iter_mut()
.for_each(|d| d.set_auth_token(&self.auth_token));
Ok(devices)
} else {
let err: MyPlexApiErrorResponse = serde_xml_rs::from_str(response.text()?.as_str())?;
Err(crate::error::PlexApiError::from(err))
}
}
}