Completed
Push — master ( 18d750...3bad9e )
by Andrii
11:56
created

heppy.modules.epp   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 71
Duplicated Lines 0 %
Metric Value
dl 0
loc 71
rs 10
wmc 13
1
from ..Module import Module
2
3
class epp(Module):
4
    opmap = {
5
        'greeting':     'descend',
6
        'response':     'descend',
7
        'extension':    'descend',
8
        'svcMenu':      'descend',
9
        'svcExtension': 'descend',
10
        'dcp':          'nothing',
11
        'svID':         'set',
12
        'svDate':       'set',
13
        'lang':         'set',
14
        'version':      'set',
15
        'objURI':       'addpair',
16
        'extURI':       'addpair',
17
        'value':        'descend',
18
        'extValue':     'descend',
19
        'undef':        'nothing',
20
        'trID':         'descend',
21
        'clTRID':       'set',
22
        'svTRID':       'set',
23
        'resData':      'descend',
24
    }
25
26
### RESPONSE parsing
27
28
    def parse_result(self, response, tag):
29
        response.set('result.code', tag.attrib['code'])
30
        self.parse_descend(response, tag)
31
32
    def parse_msg(self, response, tag):
33
        if 'lang' in tag.attrib:
34
            response.set('result.lang', tag.attrib['lang'])
35
        response.set('result.msg', tag.text)
36
37
    def parse_reason(self, response, tag):
38
        response.set('result.reason', tag.text)
39
40
### REQUEST rendering
41
42
    def render_login(self, request):
43
        action = self.render_root_command(request, 'login')
44
        request.sub(action, 'clID', {}, request.get('clID', request.get('login')))
45
        request.sub(action, 'pw',   {}, request.get('pw',   request.get('password')))
46
        newPW = request.get('newPW', request.get('newPassword'))
47
        if newPW is not None:
48
            request.sub(action, 'newPW', {}, newPW)
49
        options = request.sub(action, 'options')
50
        request.sub(options, 'version', {}, request.get('version', '1.0'))
51
        request.sub(options, 'lang',    {}, request.get('lang', 'en'))
52
        svcs = request.sub(action, 'svcs')
53
        for svc in request.get('objURIs', {'0': request.nsmap['epp']}).itervalues():
54
            request.sub(svcs, 'objURI', {}, svc)
55
        extURIs = request.get('extURIs', {})
56
        if extURIs != {}:
57
            exts = request.sub(svcs, 'svcExtension');
58
            for ext in extURIs.itervalues():
59
                request.sub(exts, 'extURI', {}, ext)
60
61
    def render_logout(self, request):
62
        self.render_root_command(request, 'logout')
63
64
    def render_hello(self, request):
65
        epp = self.render_epp(request)
66
        request.sub(epp, 'hello')
67
68
    def render_poll(self, request):
69
        attrs = {'op': request.get('op', 'req')}
70
        msgID = request.get('msgID')
71
        if msgID is not None:
72
            attrs['msgID'] = msgID
73
        self.render_root_command(request, 'poll', attrs)
74