Completed
Push — master ( 699989...d91a4b )
by Andrii
14:03
created

heppy.modules.secDNS.parse_keyData()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 5
rs 9.4285
1
from collections import OrderedDict
2
3
from ..Module import Module
4
5
class secDNS(Module):
6
    opmap = {
7
        'infData':      'descend',
8
        'maxSigLife':   'set',
9
    }
10
11
### RESPONSE parsing
12
13
    def parse_dsData(self, response, tag):
14
        response.set('keyTag',      response.find_text(tag, 'secDNS:keyTag'))
15
        response.set('digestAlg',   response.find_text(tag, 'secDNS:alg'))
16
        response.set('digestType',  response.find_text(tag, 'secDNS:digestType'))
17
        response.set('digest',      response.find_text(tag, 'secDNS:digest'))
18
19
    def parse_keyData(self, response, tag):
20
        response.set('flags',       response.find_text(tag, 'secDNS:flags'))
21
        response.set('protocol',    response.find_text(tag, 'secDNS:protocol'))
22
        response.set('keyAlg',      response.find_text(tag, 'secDNS:alg'))
23
        response.set('pubKey',      response.find_text(tag, 'secDNS:pubKey'))
24
25
### REQUEST rendering
26
27
    def render_create(self, request):
28
        ext = self.render_extension(request, 'create')
29
        self.render_allData(request, ext, request)
30
31
    def render_update(self, request):
32
        ext = self.render_extension(request, 'update')
33
        for k in ('add', 'rem', 'chg'):
34
            if request.get(k):
35
                command = request.sub(ext, 'secDNS:' + k)
36
                self.render_allData(request, command, request.get(k))
37
38
    def render_allData(self, request, parent, values):
39
        if values.get('all')=='true':
40
            request.sub(parent, 'secDNS:all', {}, 'true')
41
            return
42
        if values.get('maxSigLife'):
43
            request.sub(parent, 'secDNS:maxSigLife', {}, values.get('maxSigLife'))
44
        if values.get('digest'):
45
            self.render_dsData(request, parent, values)
46
        else:
47
            self.render_keyData(request, parent, values)
48
49
    def render_dsData(self, request, parent, values):
50
        data = request.sub(parent, 'secDNS:dsData')
51
        request.sub(data, 'secDNS:keyTag',      {}, values.get('keyTag'))
52
        request.sub(data, 'secDNS:alg',         {}, values.get('digestAlg'))
53
        request.sub(data, 'secDNS:digestType',  {}, values.get('digestType'))
54
        request.sub(data, 'secDNS:digest',      {}, values.get('digest'))
55
        self.render_keyData(request, data, values)
56
57
    def render_keyData(self, request, parent, values):
58
        if not values.get('pubKey'):
59
            return
60
        data = request.sub(parent, 'secDNS:keyData')
61
        request.sub(data, 'secDNS:flags',       {}, values.get('flags'))
62
        request.sub(data, 'secDNS:protocol',    {}, values.get('protocol'))
63
        request.sub(data, 'secDNS:alg',         {}, values.get('keyAlg'))
64
        request.sub(data, 'secDNS:pubKey',      {}, values.get('pubKey'))
65
66