Skip to main content

api_scanner/scanner/common/
finding_builder.rs

1use crate::reports::{Finding, Severity};
2
3pub struct FindingBuilder {
4    url: String,
5    scanner: String,
6    check: String,
7    title: String,
8    severity: Severity,
9    detail: String,
10}
11
12impl FindingBuilder {
13    pub fn new(url: &str, scanner: &str) -> Self {
14        Self {
15            url: url.to_string(),
16            scanner: scanner.to_string(),
17            check: String::new(),
18            title: String::new(),
19            severity: Severity::Info,
20            detail: String::new(),
21        }
22    }
23
24    pub fn check(mut self, check: impl Into<String>) -> Self {
25        self.check = check.into();
26        self
27    }
28
29    pub fn title(mut self, title: impl Into<String>) -> Self {
30        self.title = title.into();
31        self
32    }
33
34    pub fn severity(mut self, severity: Severity) -> Self {
35        self.severity = severity;
36        self
37    }
38
39    pub fn detail(mut self, detail: impl Into<String>) -> Self {
40        self.detail = detail.into();
41        self
42    }
43
44    pub fn build(self) -> Finding {
45        Finding::new(
46            self.url,
47            self.check,
48            self.title,
49            self.severity,
50            self.detail,
51            self.scanner,
52        )
53    }
54}