|
6 | 6 | from .apihelper import APIHelper |
7 | 7 |
|
8 | 8 | class Analytics(): |
9 | | - report_types = [ "findings", "scans" ] |
| 9 | + report_types = [ "findings", "scans", "deletedscans" ] |
10 | 10 |
|
11 | 11 | findings_scan_types = ["Static Analysis", "Dynamic Analysis", "Manual", "SCA", "Software Composition Analysis" ] |
12 | 12 | scan_scan_types = ["Static Analysis", "Dynamic Analysis", "Manual" ] |
13 | 13 |
|
14 | 14 | base_url = 'appsec/v1/analytics/report' |
15 | 15 |
|
16 | 16 | #public methods |
17 | | - def create_report(self,report_type,last_updated_start_date,last_updated_end_date=None, |
| 17 | + def create_report(self,report_type,last_updated_start_date=None,last_updated_end_date=None, |
18 | 18 | scan_type:list = [], finding_status=None,passed_policy=None, |
19 | | - policy_sandbox=None,application_id=None,rawjson=False): |
| 19 | + policy_sandbox=None,application_id=None,rawjson=False, deletion_start_date=None, |
| 20 | + deletion_end_date=None): |
20 | 21 |
|
21 | 22 | if report_type not in self.report_types: |
22 | 23 | raise ValueError("{} is not in the list of valid report types ({})".format(report_type,self.report_types)) |
23 | 24 |
|
24 | | - report_def = { "report_type": report_type,"last_updated_start_date": last_updated_start_date } |
| 25 | + report_def = { 'report_type': report_type } |
| 26 | + |
| 27 | + if last_updated_start_date: |
| 28 | + report_def['last_updated_start_date'] = last_updated_start_date |
| 29 | + else: |
| 30 | + if report_type in ['findings','scans']: |
| 31 | + raise ValueError("{} report type requires a last updated start date.").format(report_type) |
25 | 32 |
|
26 | 33 | if last_updated_end_date: |
27 | 34 | report_def['last_updated_end_date'] = last_updated_end_date |
28 | 35 |
|
| 36 | + if deletion_end_date: |
| 37 | + report_def['deletion_end_date'] = deletion_end_date |
| 38 | + |
| 39 | + if deletion_start_date: |
| 40 | + report_def['deletion_start_date'] = deletion_start_date |
| 41 | + else: |
| 42 | + if report_type == 'deletedscans': |
| 43 | + raise ValueError("{} report type requires a deleteion start date.").format(report_type) |
| 44 | + |
29 | 45 | if len(scan_type) > 0: |
30 | 46 | if report_type == 'findings': |
31 | 47 | valid_scan_types = self.findings_scan_types |
32 | | - elif report_type == 'scans': |
| 48 | + elif report_type in [ 'scans', 'deletedscans' ]: |
33 | 49 | valid_scan_types = self.scan_scan_types |
34 | 50 | if not(self._case_insensitive_list_compare(scan_type,valid_scan_types)): |
35 | 51 | raise ValueError("{} is not in the list of valid scan types ({})".format(report_type,valid_scan_types)) |
@@ -62,6 +78,10 @@ def get_findings(self, guid: UUID): |
62 | 78 | def get_scans(self, guid: UUID): |
63 | 79 | thestatus, thescans = self.get(guid=guid,report_type='scans') |
64 | 80 | return thestatus, thescans |
| 81 | + |
| 82 | + def get_deleted_scans(self, guid: UUID): |
| 83 | + thestatus, thescans = self.get(guid=guid,report_type='deletedscans') |
| 84 | + return thestatus, thescans |
65 | 85 |
|
66 | 86 | def get(self,guid: UUID,report_type='findings'): |
67 | 87 | # handle multiple scan types |
|
0 commit comments