use std::sync::Arc;
use crate::RedactionRules;
use super::http_redaction_policy_parts::HttpPolicyParts;
use super::{
TextBodyPolicy,
UrlPathPolicy,
};
#[must_use]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct HttpPolicy {
inner: Arc<HttpPolicyInner>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
struct HttpPolicyInner {
header_rules: RedactionRules,
query_rules: RedactionRules,
body_rules: RedactionRules,
url_path_policy: UrlPathPolicy,
text_body_policy: TextBodyPolicy,
}
impl HttpPolicy {
pub(super) fn from_parts(parts: HttpPolicyParts) -> Self {
Self {
inner: std::sync::Arc::new(HttpPolicyInner {
header_rules: parts.header_rules,
query_rules: parts.query_rules,
body_rules: parts.body_rules,
url_path_policy: parts.url_path_policy,
text_body_policy: parts.text_body_policy,
}),
}
}
#[inline(always)]
pub fn header_rules(&self) -> &RedactionRules {
&self.inner.header_rules
}
#[inline(always)]
pub fn query_rules(&self) -> &RedactionRules {
&self.inner.query_rules
}
#[inline(always)]
pub fn body_rules(&self) -> &RedactionRules {
&self.inner.body_rules
}
#[inline(always)]
pub fn url_path_policy(&self) -> UrlPathPolicy {
self.inner.url_path_policy
}
#[inline(always)]
pub fn text_body_policy(&self) -> TextBodyPolicy {
self.inner.text_body_policy
}
}