qubit_redact/http/
http_redaction_policy.rs1use std::sync::Arc;
12
13use crate::RedactionRules;
14
15use super::http_redaction_policy_parts::HttpPolicyParts;
16use super::{
17 TextBodyPolicy,
18 UrlPathPolicy,
19};
20
21#[must_use]
23#[derive(Debug, Clone, PartialEq, Eq)]
24pub struct HttpPolicy {
25 inner: Arc<HttpPolicyInner>,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq)]
30struct HttpPolicyInner {
31 header_rules: RedactionRules,
32 query_rules: RedactionRules,
33 body_rules: RedactionRules,
34 url_path_policy: UrlPathPolicy,
35 text_body_policy: TextBodyPolicy,
36}
37
38impl HttpPolicy {
39 pub(super) fn from_parts(parts: HttpPolicyParts) -> Self {
40 Self {
41 inner: std::sync::Arc::new(HttpPolicyInner {
42 header_rules: parts.header_rules,
43 query_rules: parts.query_rules,
44 body_rules: parts.body_rules,
45 url_path_policy: parts.url_path_policy,
46 text_body_policy: parts.text_body_policy,
47 }),
48 }
49 }
50
51 #[inline(always)]
53 pub fn header_rules(&self) -> &RedactionRules {
54 &self.inner.header_rules
55 }
56
57 #[inline(always)]
59 pub fn query_rules(&self) -> &RedactionRules {
60 &self.inner.query_rules
61 }
62
63 #[inline(always)]
65 pub fn body_rules(&self) -> &RedactionRules {
66 &self.inner.body_rules
67 }
68
69 #[inline(always)]
71 pub fn url_path_policy(&self) -> UrlPathPolicy {
72 self.inner.url_path_policy
73 }
74
75 #[inline(always)]
77 pub fn text_body_policy(&self) -> TextBodyPolicy {
78 self.inner.text_body_policy
79 }
80}