Completed
Push — master ( 6834c1...18d750 )
by Andrii
12:59
created

heppy.modules.domain.parse_status()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 2
rs 10
1
from collections import OrderedDict
2
3
from ..Module import Module
4
5
class domain(Module):
6
    opmap = {
7
        'infData':      'descend',
8
        'chkData':      'descend',
9
        'creData':      'descend',
10
        'ns':           'descend',
11
        'authInfo':     'descend',
12
        'name':         'set',
13
        'roid':         'set',
14
        'clID':         'set',
15
        'crID':         'set',
16
        'upID':         'set',
17
        'crDate':       'set',
18
        'upDate':       'set',
19
        'exDate':       'set',
20
        'trDate':       'set',
21
        'pw':           'set',
22
        'registrant':   'set',
23
    }
24
25
### RESPONSE parsing
26
27
    def parse_cd(self, response, tag):
28
        return self.parse_cd_tag(response, tag)
29
30
    def parse_hostObj(self, response, tag):
31
        response.addpair('nss', tag.text.lower())
32
33
    def parse_host(self, response, tag):
34
        response.addpair('hosts', tag.text.lower())
35
36
    def parse_contact(self, response, tag):
37
        response.set(tag.attrib['type'], tag.text)
38
39
### REQUEST rendering
40
41
    def render_check(self, request):
42
        command = self.render_command(request, 'check')
43
        for name in request.get('names').itervalues():
44
            request.sub(command, 'domain:name', {}, name)
45
46
    def render_info(self, request):
47
        hosts = request.get('hosts', 'all')
48
        command = self.render_command_fields(request, 'info', {'name': {'hosts': hosts}})
49
        if request.has('pw'):
50
            self.render_auth_info(request, command)
51
52
    def render_auth_info(self, request, command, pw = None):
53
        if pw is None:
54
            pw = request.get('pw', '')
55
        authInfo = request.sub(command, 'domain:authInfo')
56
        request.sub(authInfo, 'domain:pw', {}, pw)
57
58
    def render_create(self, request):
59
        command = self.render_command_fields(request, 'create', OrderedDict([
60
            ('name', {}),
61
            ('period', {'unit': 'y'}),
62
        ]))
63
        if request.get('registrant'):
64
            request.sub(command, 'domain:registrant', {}, request.get('registrant'))
65
        for type in ('admin', 'tech', 'billing'):
66
            if request.get(type):
67
                request.sub(command, 'domain:contact', {'type': type}, request.get(type))
68
        self.render_auth_info(request, command)
69
70
    def render_delete(self, request):
71
        self.render_command_fields(request, 'delete')
72
73
    def render_renew(self, request):
74
        self.render_command_fields(request, 'renew', OrderedDict([
75
            ('name', {}),
76
            ('curExpDate', {}),
77
            ('period', {'unit': 'y'}),
78
        ]))
79
80
    def render_update(self, request):
81
        command = self.render_command_fields(request, 'update')
82