use super::PolicyError;
use super::RedactionFloor;
use super::RedactionRules;
use super::Sensitivity;
#[cfg(feature = "http")]
pub struct HttpContextBuilderView<'a> {
pub(super) builder: &'a mut crate::formats::http::HttpPolicyBuilder,
pub(super) error: &'a mut Option<PolicyError>,
pub(super) context: crate::formats::http::HttpFieldContext,
}
#[cfg(feature = "http")]
impl HttpContextBuilderView<'_> {
#[inline(always)]
pub fn replace_rules(&mut self, rules: RedactionRules) -> &mut Self {
self.builder.rules_mut(self.context, rules);
self
}
pub fn raise(&mut self, field: &str, level: Sensitivity) -> Result<&mut Self, PolicyError> {
if self.error.is_none()
&& let Err(error) = self.builder.raise_mut(self.context, field, level)
{
*self.error = Some(error.clone());
return Err(error);
}
Ok(self)
}
pub fn override_level(&mut self, field: &str, level: Sensitivity) -> Result<&mut Self, PolicyError> {
if self.error.is_none()
&& let Err(error) = self.builder.override_level_mut(self.context, field, level)
{
*self.error = Some(error.clone());
return Err(error);
}
Ok(self)
}
pub fn allow_exact(&mut self, field: &str) -> Result<&mut Self, PolicyError> {
if self.error.is_none()
&& let Err(error) = self.builder.allow_exact_mut(self.context, field)
{
*self.error = Some(error.clone());
return Err(error);
}
Ok(self)
}
pub fn allow_suffix(&mut self, field: &str) -> Result<&mut Self, PolicyError> {
if self.error.is_none()
&& let Err(error) = self.builder.allow_suffix_mut(self.context, field)
{
*self.error = Some(error.clone());
return Err(error);
}
Ok(self)
}
pub fn remove_allow_exact(&mut self, field: &str) -> Result<&mut Self, PolicyError> {
if self.error.is_none()
&& let Err(error) = self.builder.remove_allow_exact_mut(self.context, field)
{
*self.error = Some(error.clone());
return Err(error);
}
Ok(self)
}
pub fn remove_allow_suffix(&mut self, field: &str) -> Result<&mut Self, PolicyError> {
if self.error.is_none()
&& let Err(error) = self.builder.remove_allow_suffix_mut(self.context, field)
{
*self.error = Some(error.clone());
return Err(error);
}
Ok(self)
}
#[inline(always)]
pub fn clear_allow_rules(&mut self) -> &mut Self {
self.builder.clear_allow_rules_mut(self.context);
self
}
#[must_use]
#[inline(always)]
pub fn floor(&mut self, floor: RedactionFloor) -> &mut Self {
self.builder.floor_mut(self.context, floor);
self
}
#[inline(always)]
pub fn disable_floor(&mut self) -> &mut Self {
self.builder.disable_floor_mut(self.context);
self
}
}