Philipp Hörist pushed to branch master at gajim / python-nbxmpp

Commits:

1 changed file:

Changes:

  • nbxmpp/modules/ibb.py
    ... ... @@ -21,16 +21,13 @@ from nbxmpp.protocol import ERR_FEATURE_NOT_IMPLEMENTED
    21 21
     from nbxmpp.protocol import NodeProcessed
    
    22 22
     from nbxmpp.protocol import Iq
    
    23 23
     from nbxmpp.namespaces import Namespace
    
    24
    -from nbxmpp.protocol import isResultNode
    
    25
    -from nbxmpp.structs import CommonResult
    
    26 24
     from nbxmpp.structs import StanzaHandler
    
    27 25
     from nbxmpp.structs import IBBData
    
    28 26
     from nbxmpp.util import b64decode
    
    29 27
     from nbxmpp.util import b64encode
    
    30
    -from nbxmpp.util import call_on_response
    
    31
    -from nbxmpp.util import callback
    
    32
    -from nbxmpp.util import raise_error
    
    33 28
     from nbxmpp.modules.base import BaseModule
    
    29
    +from nbxmpp.modules.util import process_response
    
    30
    +from nbxmpp.task import iq_request_task
    
    34 31
     
    
    35 32
     
    
    36 33
     class IBB(BaseModule):
    
    ... ... @@ -132,31 +129,46 @@ class IBB(BaseModule):
    132 129
                 reply = ErrorStanza(stanza, error)
    
    133 130
             self._client.send_stanza(reply)
    
    134 131
     
    
    135
    -    @call_on_response('_default_response')
    
    132
    +    @iq_request_task
    
    136 133
         def send_open(self, jid, sid, block_size):
    
    137
    -        iq = Iq('set', to=jid)
    
    138
    -        iq.addChild('open',
    
    139
    -                    {'block-size': block_size, 'sid': sid, 'stanza': 'iq'},
    
    140
    -                    namespace=Namespace.IBB)
    
    141
    -        return iq
    
    134
    +        _task = yield
    
    142 135
     
    
    143
    -    @call_on_response('_default_response')
    
    136
    +        response = yield _make_ibb_open(jid, sid, block_size)
    
    137
    +        yield process_response(response)
    
    138
    +
    
    139
    +    @iq_request_task
    
    144 140
         def send_close(self, jid, sid):
    
    145
    -        iq = Iq('set', to=jid)
    
    146
    -        iq.addChild('close', {'sid': sid}, namespace=Namespace.IBB)
    
    147
    -        return iq
    
    141
    +        _task = yield
    
    142
    +
    
    143
    +        response = yield _make_ibb_close(jid, sid)
    
    144
    +        yield process_response(response)
    
    148 145
     
    
    149
    -    @call_on_response('_default_response')
    
    146
    +    @iq_request_task
    
    150 147
         def send_data(self, jid, sid, seq, data):
    
    151
    -        iq = Iq('set', to=jid)
    
    152
    -        ibb_data = iq.addChild('data',
    
    153
    -                               {'sid': sid, 'seq': seq},
    
    154
    -                               namespace=Namespace.IBB)
    
    155
    -        ibb_data.setData(b64encode(data))
    
    156
    -        return iq
    
    157
    -
    
    158
    -    @callback
    
    159
    -    def _default_response(self, stanza):
    
    160
    -        if not isResultNode(stanza):
    
    161
    -            return raise_error(self._log.info, stanza)
    
    162
    -        return CommonResult(jid=stanza.getFrom())
    148
    +        _task = yield
    
    149
    +
    
    150
    +        response = yield _make_ibb_data(jid, sid, seq, data)
    
    151
    +        yield process_response(response)
    
    152
    +
    
    153
    +
    
    154
    +def _make_ibb_open(jid, sid, block_size):
    
    155
    +    iq = Iq('set', to=jid)
    
    156
    +    iq.addChild('open',
    
    157
    +                {'block-size': block_size, 'sid': sid, 'stanza': 'iq'},
    
    158
    +                namespace=Namespace.IBB)
    
    159
    +    return iq
    
    160
    +
    
    161
    +
    
    162
    +def _make_ibb_close(jid, sid):
    
    163
    +    iq = Iq('set', to=jid)
    
    164
    +    iq.addChild('close', {'sid': sid}, namespace=Namespace.IBB)
    
    165
    +    return iq
    
    166
    +
    
    167
    +
    
    168
    +def _make_ibb_data(jid, sid, seq, data):
    
    169
    +    iq = Iq('set', to=jid)
    
    170
    +    ibb_data = iq.addChild('data',
    
    171
    +                           {'sid': sid, 'seq': seq},
    
    172
    +                           namespace=Namespace.IBB)
    
    173
    +    ibb_data.setData(b64encode(data))
    
    174
    +    return iq