@@ -19,19 +19,32 @@ def parse(self, data: dict) -> list[Finding]:
1919 scanner = self .SCANNER_NAME
2020 target = data .get ("target" , data .get ("card" , data .get ("endpoint" , "unknown" )))
2121
22- raw_findings = data .get ("findings" , data .get ("results" , data .get ("assessments" , [])))
22+ raw_findings = data .get (
23+ "findings" , data .get ("results" , data .get ("assessments" , []))
24+ )
2325 if not isinstance (raw_findings , list ):
24- raise ParseError (f"Expected 'findings' to be a list, got { type (raw_findings ).__name__ } " )
26+ raise ParseError (
27+ f"Expected 'findings' to be a list, got { type (raw_findings ).__name__ } "
28+ )
2529
2630 for item in raw_findings :
2731 if not isinstance (item , dict ):
2832 continue
2933 threat_name = item .get ("threat_name" , "" )
30- sev_raw = item .get ("severity" , item .get ("risk" , "info" )).upper ()
31- sev = Severity .CRITICAL if sev_raw == "CRITICAL" else (
32- Severity .HIGH if sev_raw == "HIGH" else (
33- Severity .MEDIUM if sev_raw == "MEDIUM" else (
34- Severity .LOW if sev_raw == "LOW" else Severity .INFO )))
34+ sev_raw = (item .get ("severity" ) or item .get ("risk" ) or "info" ).upper ()
35+ sev = (
36+ Severity .CRITICAL
37+ if sev_raw == "CRITICAL"
38+ else (
39+ Severity .HIGH
40+ if sev_raw == "HIGH"
41+ else (
42+ Severity .MEDIUM
43+ if sev_raw == "MEDIUM"
44+ else (Severity .LOW if sev_raw == "LOW" else Severity .INFO )
45+ )
46+ )
47+ )
3548 analyzer = item .get ("analyzer" , "unknown" )
3649 summary = item .get ("summary" , "" )
3750 description = item .get ("description" , summary )
@@ -44,29 +57,35 @@ def parse(self, data: dict) -> list[Finding]:
4457 if isinstance (item .get ("details" ), dict ):
4558 location = item ["details" ].get ("field" , "" )
4659
47- title = threat_name or f"[{ analyzer } ] { summary [:60 ]} " if summary else f"{ analyzer } finding"
60+ title = (
61+ threat_name or f"[{ analyzer } ] { summary [:60 ]} "
62+ if summary
63+ else f"{ analyzer } finding"
64+ )
4865 if aitech :
4966 title = f"[{ aitech } ] { aitech_name } "
5067 if aisubtech :
5168 title = f"[{ aisubtech } ] { aisubtech_name or title } "
5269
53- findings .append (Finding (
54- scan_id = target ,
55- scanner = scanner ,
56- tool_name = f"a2a-{ analyzer .lower ()} " ,
57- severity = sev ,
58- title = title ,
59- description = description or summary ,
60- raw_data = {
61- "threat_name" : threat_name ,
62- "analyzer" : analyzer ,
63- "aitech" : aitech ,
64- "aitech_name" : aitech_name ,
65- "aisubtech" : aisubtech ,
66- "aisubtech_name" : aisubtech_name ,
67- "location" : location ,
68- "details" : item .get ("details" ),
69- },
70- ))
70+ findings .append (
71+ Finding (
72+ scan_id = target ,
73+ scanner = scanner ,
74+ tool_name = f"a2a-{ analyzer .lower ()} " ,
75+ severity = sev ,
76+ title = title ,
77+ description = description or summary ,
78+ raw_data = {
79+ "threat_name" : threat_name ,
80+ "analyzer" : analyzer ,
81+ "aitech" : aitech ,
82+ "aitech_name" : aitech_name ,
83+ "aisubtech" : aisubtech ,
84+ "aisubtech_name" : aisubtech_name ,
85+ "location" : location ,
86+ "details" : item .get ("details" ),
87+ },
88+ )
89+ )
7190
7291 return findings
0 commit comments