Blocking client and patch support on Principals.

This commit is contained in:
Mauro D
2022-08-09 15:28:55 +00:00
parent 76fe0331a2
commit b0ba1737b1
30 changed files with 1883 additions and 25 deletions

View File

@@ -0,0 +1,136 @@
use crate::{
client::Client,
core::{
get::GetRequest,
request::{Arguments, Request},
response::{VacationResponseGetResponse, VacationResponseSetResponse},
set::{SetObject, SetRequest},
},
Method, Set, URI,
};
use super::{Property, VacationResponse};
impl Client {
pub fn vacation_response_create(
&self,
subject: impl Into<String>,
text_body: Option<impl Into<String>>,
html_body: Option<impl Into<String>>,
) -> crate::Result<VacationResponse> {
let mut request = self.build();
let created_id = request
.set_vacation_response()
.create()
.is_enabled(true)
.subject(Some(subject))
.text_body(text_body)
.html_body(html_body)
.create_id()
.unwrap();
request
.send_single::<VacationResponseSetResponse>()?
.created(&created_id)
}
pub fn vacation_response_enable(
&self,
subject: impl Into<String>,
text_body: Option<impl Into<String>>,
html_body: Option<impl Into<String>>,
) -> crate::Result<Option<VacationResponse>> {
let mut request = self.build();
request
.set_vacation_response()
.update("singleton")
.is_enabled(true)
.subject(Some(subject))
.text_body(text_body)
.html_body(html_body);
request
.send_single::<VacationResponseSetResponse>()?
.updated("singleton")
}
pub fn vacation_response_disable(&self) -> crate::Result<Option<VacationResponse>> {
let mut request = self.build();
request
.set_vacation_response()
.update("singleton")
.is_enabled(false);
request
.send_single::<VacationResponseSetResponse>()?
.updated("singleton")
}
pub fn vacation_response_set_dates(
&self,
from_date: Option<i64>,
to_date: Option<i64>,
) -> crate::Result<Option<VacationResponse>> {
let mut request = self.build();
request
.set_vacation_response()
.update("singleton")
.is_enabled(true)
.from_date(from_date)
.to_date(to_date);
request
.send_single::<VacationResponseSetResponse>()?
.updated("singleton")
}
pub fn vacation_response_get(
&self,
properties: Option<Vec<Property>>,
) -> crate::Result<Option<VacationResponse>> {
let mut request = self.build();
let get_request = request.get_vacation_response().ids(["singleton"]);
if let Some(properties) = properties {
get_request.properties(properties.into_iter());
}
request
.send_single::<VacationResponseGetResponse>()
.map(|mut r| r.take_list().pop())
}
pub fn vacation_response_destroy(&self) -> crate::Result<()> {
let mut request = self.build();
request.set_vacation_response().destroy(["singleton"]);
request
.send_single::<VacationResponseSetResponse>()?
.destroyed("singleton")
}
}
impl Request<'_> {
pub fn get_vacation_response(&mut self) -> &mut GetRequest<VacationResponse<Set>> {
self.add_capability(URI::VacationResponse);
self.add_method_call(
Method::GetVacationResponse,
Arguments::vacation_response_get(self.params(Method::GetVacationResponse)),
)
.vacation_response_get_mut()
}
pub fn send_get_vacation_response(self) -> crate::Result<VacationResponseGetResponse> {
self.send_single()
}
pub fn set_vacation_response(&mut self) -> &mut SetRequest<VacationResponse<Set>> {
self.add_capability(URI::VacationResponse);
self.add_method_call(
Method::SetVacationResponse,
Arguments::vacation_response_set(self.params(Method::GetVacationResponse)),
)
.vacation_response_set_mut()
}
pub fn send_set_vacation_response(self) -> crate::Result<VacationResponseSetResponse> {
self.send_single()
}
}

View File

@@ -1,5 +1,8 @@
pub mod get;
#[cfg(feature = "async")]
pub mod helpers;
#[cfg(feature = "blocking")]
pub mod helpers_blocking;
pub mod set;
use std::fmt::Display;