/* * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC * * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ use crate::{ error::set::SetError, object::sieve::SieveProperty, request::{ MaybeInvalid, deserialize::{DeserializeArguments, deserialize_request}, }, }; use serde::{Deserialize, Deserializer, Serialize}; use types::{blob::BlobId, id::Id}; #[derive(Debug, Clone, Default)] pub struct ValidateSieveScriptRequest { pub account_id: Id, pub blob_id: MaybeInvalid, } #[derive(Debug, Serialize)] pub struct ValidateSieveScriptResponse { #[serde(rename = "accountId")] pub account_id: Id, pub error: Option>, } impl<'de> DeserializeArguments<'de> for ValidateSieveScriptRequest { fn deserialize_argument(&mut self, key: &str, map: &mut A) -> Result<(), A::Error> where A: serde::de::MapAccess<'de>, { hashify::fnc_map!(key.as_bytes(), b"accountId" => { self.account_id = crate::request::deserialize_account_id(map)?; }, b"blobId" => { self.blob_id = map.next_value()?; }, _ => { let _ = map.next_value::()?; } ); Ok(()) } } impl<'de> Deserialize<'de> for ValidateSieveScriptRequest { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { deserialize_request(deserializer) } }