SieveScripts and VacationResponse implementation
This commit is contained in:
@@ -28,7 +28,6 @@ pub enum RequestArguments {
|
||||
PushSubscription,
|
||||
SieveScript,
|
||||
VacationResponse,
|
||||
Principal,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, serde::Serialize)]
|
||||
@@ -61,7 +60,6 @@ impl JsonObjectParser for GetRequest<RequestArguments> {
|
||||
MethodObject::PushSubscription => RequestArguments::PushSubscription,
|
||||
MethodObject::SieveScript => RequestArguments::SieveScript,
|
||||
MethodObject::VacationResponse => RequestArguments::VacationResponse,
|
||||
MethodObject::Principal => RequestArguments::Principal,
|
||||
_ => {
|
||||
return Err(Error::Method(MethodError::UnknownMethod(format!(
|
||||
"{}/get",
|
||||
@@ -125,7 +123,7 @@ impl RequestPropertyParser for RequestArguments {
|
||||
|
||||
impl GetRequest<RequestArguments> {
|
||||
pub fn take_arguments(&mut self) -> RequestArguments {
|
||||
std::mem::replace(&mut self.arguments, RequestArguments::Principal)
|
||||
std::mem::replace(&mut self.arguments, RequestArguments::VacationResponse)
|
||||
}
|
||||
|
||||
pub fn with_arguments<T>(self, arguments: T) -> GetRequest<T> {
|
||||
|
||||
@@ -135,7 +135,6 @@ pub enum RequestArguments {
|
||||
Mailbox(mailbox::QueryArguments),
|
||||
EmailSubmission,
|
||||
SieveScript,
|
||||
Principal,
|
||||
}
|
||||
|
||||
impl JsonObjectParser for QueryRequest<RequestArguments> {
|
||||
@@ -149,7 +148,6 @@ impl JsonObjectParser for QueryRequest<RequestArguments> {
|
||||
MethodObject::Mailbox => RequestArguments::Mailbox(Default::default()),
|
||||
MethodObject::EmailSubmission => RequestArguments::EmailSubmission,
|
||||
MethodObject::SieveScript => RequestArguments::SieveScript,
|
||||
MethodObject::Principal => RequestArguments::Principal,
|
||||
_ => {
|
||||
return Err(Error::Method(MethodError::UnknownMethod(format!(
|
||||
"{}/query",
|
||||
@@ -714,7 +712,7 @@ impl Comparator {
|
||||
|
||||
impl QueryRequest<RequestArguments> {
|
||||
pub fn take_arguments(&mut self) -> RequestArguments {
|
||||
std::mem::replace(&mut self.arguments, RequestArguments::Principal)
|
||||
std::mem::replace(&mut self.arguments, RequestArguments::SieveScript)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ pub enum RequestArguments {
|
||||
PushSubscription,
|
||||
SieveScript(sieve::SetArguments),
|
||||
VacationResponse,
|
||||
Principal,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, serde::Serialize)]
|
||||
@@ -108,7 +107,6 @@ impl JsonObjectParser for SetRequest<RequestArguments> {
|
||||
MethodObject::PushSubscription => RequestArguments::PushSubscription,
|
||||
MethodObject::VacationResponse => RequestArguments::VacationResponse,
|
||||
MethodObject::SieveScript => RequestArguments::SieveScript(Default::default()),
|
||||
MethodObject::Principal => RequestArguments::Principal,
|
||||
_ => {
|
||||
return Err(Error::Method(MethodError::UnknownMethod(format!(
|
||||
"{}/set",
|
||||
@@ -410,7 +408,7 @@ impl<T> SetRequest<T> {
|
||||
|
||||
impl SetRequest<RequestArguments> {
|
||||
pub fn take_arguments(&mut self) -> RequestArguments {
|
||||
std::mem::replace(&mut self.arguments, RequestArguments::Principal)
|
||||
std::mem::replace(&mut self.arguments, RequestArguments::VacationResponse)
|
||||
}
|
||||
|
||||
pub fn with_arguments<T>(self, arguments: T) -> SetRequest<T> {
|
||||
@@ -500,6 +498,22 @@ impl SetResponse {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_object_by_id(&mut self, id: Id) -> Option<&mut Object<Value>> {
|
||||
if let Some(obj) = self.updated.get_mut(&id) {
|
||||
if let Some(obj) = obj {
|
||||
return Some(obj);
|
||||
} else {
|
||||
*obj = Some(Object::with_capacity(1));
|
||||
return obj.as_mut().unwrap().into();
|
||||
}
|
||||
}
|
||||
|
||||
(&mut self.created)
|
||||
.into_iter()
|
||||
.map(|(_, obj)| obj)
|
||||
.find(|obj| obj.properties.get(&Property::Id) == Some(&Value::Id(id)))
|
||||
}
|
||||
|
||||
pub fn has_changes(&self) -> bool {
|
||||
!self.created.is_empty() || !self.updated.is_empty() || !self.destroyed.is_empty()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user