use serde::{Deserialize, Serialize};
use crate::error::Error;
use crate::generated::routes;
use crate::generated::types::Calendar;
pub use crate::generated::services::calendars::*;
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct ListedCalendar {
#[serde(default)]
pub calendar: Calendar,
#[serde(default)]
pub recording_changes_url: Option<String>,
#[serde(default)]
pub signed_stream_name: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct CalendarList {
#[serde(default)]
pub calendars: Vec<ListedCalendar>,
#[serde(default)]
pub calendar_changes_url: Option<String>,
#[serde(default)]
pub selected_calendar_ids: Vec<i64>,
}
impl<'a> Calendars<'a> {
pub async fn list_with_changes(&self) -> Result<CalendarList, Error> {
let operation = self.client().operation(&routes::LIST_CALENDARS, &[]);
self.client().send(operation).await
}
pub async fn toggle_selection(&self, calendar_id: i64) -> Result<Vec<i64>, Error> {
Ok(self.toggle(calendar_id).await?.selected_calendar_ids)
}
}