use crate::integrity::{IntegrityCheck, IntegrityPolicy};
use crate::signature::SignatureVerify;
#[cfg(feature = "integrity")]
#[derive(Debug, Default, Clone)]
#[non_exhaustive]
pub struct UpdaterIntegrityOptions {
pub policy: IntegrityPolicy,
pub check: IntegrityCheck,
}
#[cfg(feature = "integrity")]
impl UpdaterIntegrityOptions {
pub fn policy(mut self, policy: IntegrityPolicy) -> Self {
self.policy = policy;
self
}
pub fn check(mut self, check: IntegrityCheck) -> Self {
self.check = check;
self
}
}
#[cfg(feature = "signature")]
#[derive(Debug, Default, Clone)]
#[non_exhaustive]
pub struct UpdaterSignatureOptions {
pub verify: Option<SignatureVerify>,
}
impl UpdaterSignatureOptions {
pub fn verify(mut self, verify: SignatureVerify) -> Self {
self.verify = Some(verify);
self
}
}
#[derive(Debug, Default, Clone)]
#[non_exhaustive]
pub struct UpdaterOptions {
pub channel: Option<String>,
#[cfg(feature = "integrity")]
pub integrity: UpdaterIntegrityOptions,
#[cfg(feature = "signature")]
pub signature: UpdaterSignatureOptions,
}
impl UpdaterOptions {
pub fn channel(mut self, channel: impl Into<String>) -> Self {
self.channel = Some(channel.into());
self
}
#[cfg(feature = "integrity")]
pub fn integrity(mut self, integrity: UpdaterIntegrityOptions) -> Self {
self.integrity = integrity;
self
}
#[cfg(feature = "signature")]
pub fn signature(mut self, signature: UpdaterSignatureOptions) -> Self {
self.signature = signature;
self
}
}