Completed
Pull Request — master (#427)
by Edward
02:15
created

ResultSets.selector()   A

Complexity

Conditions 4

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 4
dl 0
loc 9
rs 9.2
1
from qualysapi.api_objects import Host, Scan, Report
2
3
4
class FieldLists():
5
    HOST = ['dns', 'id', 'ip', 'last_scan', 'netbios', 'os', 'tracking_method']
6
    SCAN = ['assetgroups', 'duration', 'launch_datetime', 'option_profile',
7
            'processed', 'ref', 'status', 'target',
8
            'title', 'type', 'user_login']
9
    REPORT = ['expiration_datetime', 'id', 'launch_datetime', 'output_format',
10
              'size', 'status', 'type', 'user_login']
11
12
13
class ResultSets(object):
14
15
    def selector(self, output):
16
        if isinstance(output, Host):
17
            return self.parse(output, FieldLists.HOST)
18
        elif isinstance(output, Scan):
19
            return self.parse(output, FieldLists.SCAN)
20
        elif isinstance(output, Report):
21
            return self.parse(output, FieldLists.REPORT)
22
        else:
23
            return output
24
25
    def formatter(self, output):
26
        formatted = []
27
        if isinstance(output, list):
28
            for o in output:
29
                formatted.append(self.selector(o))
30
        else:
31
            formatted = self.selector(output)
32
        return formatted
33
34
    def _getval(self, obj, field):
35
        return self.selector(getattr(obj, field))
36
37
    def parse(self, output, field_list):
38
        instance_data = {field: self._getval(output, field) for field in field_list}
39
        return instance_data
40