Completed
Pull Request — master (#590)
by Anthony
03:18
created

CiscoSparkResultSets.selector()   A

Complexity

Conditions 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 2
c 1
b 1
f 0
dl 0
loc 6
rs 9.4285
1
__all__ = [
2
    'CiscoSparkResultSets'
3
]
4
5
6
FIELD_LIST_MAP = {
7
    'Room': ['id', 'title', 'type', 'isLocked',
8
             'lastActivity', 'created', 'creatorId',
9
             'teamId'],
10
    'Team': ['id', 'name', 'created'],
11
    'Webhook': ['id', 'name', 'targetUrl', 'resource',
12
                'event', 'filter', 'secret', 'created',
13
                'data'],
14
    'Message': ['id', 'roomId', 'roomType', 'toPersonId', 'toPersonEmail',
15
                'text', 'markdown', 'files', 'personId', 'personEmail',
16
                'created', 'mentionedPeople']
17
}
18
19
20
class CiscoSparkResultSets(object):
21
22
    def selector(self, output):
23
        try:
24
            field_list = FIELD_LIST_MAP.get(output.__name__)
25
            return self.parse(output, field_list)
26
        except KeyError:
27
            return output
28
29
    def formatter(self, output):
30
        formatted = []
31
        if isinstance(output, list):
32
            for o in output:
33
                formatted.append(self.selector(o))
34
        else:
35
            formatted = self.selector(output)
36
        return formatted
37
38
    def _getval(self, obj, field):
39
        return self.selector(getattr(obj, field))
40
41
    def parse(self, output, field_list):
42
        instance_data = {field: self._getval(output, field) for field in field_list}
43
        return instance_data
44