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

Commits:

2 changed files:

Changes:

  • nbxmpp/modules/presence.py
    ... ... @@ -25,6 +25,7 @@ from nbxmpp.util import error_factory
    25 25
     from nbxmpp.const import PresenceType
    
    26 26
     from nbxmpp.const import PresenceShow
    
    27 27
     from nbxmpp.modules.base import BaseModule
    
    28
    +from nbxmpp.modules.util import log_calls
    
    28 29
     
    
    29 30
     
    
    30 31
     class BasePresence(BaseModule):
    
    ... ... @@ -93,15 +94,19 @@ class BasePresence(BaseModule):
    93 94
                 self._log.warning(stanza)
    
    94 95
                 return PresenceShow.ONLINE
    
    95 96
     
    
    97
    +    @log_calls
    
    96 98
         def unsubscribe(self, jid):
    
    97 99
             self.send(jid=jid, typ='unsubscribe')
    
    98 100
     
    
    101
    +    @log_calls
    
    99 102
         def unsubscribed(self, jid):
    
    100 103
             self.send(jid=jid, typ='unsubscribed')
    
    101 104
     
    
    105
    +    @log_calls
    
    102 106
         def subscribed(self, jid):
    
    103 107
             self.send(jid=jid, typ='subscribed')
    
    104 108
     
    
    109
    +    @log_calls
    
    105 110
         def subscribe(self, jid, status=None, nick=None):
    
    106 111
             self.send(jid=jid, typ='subscribe', status=status, nick=nick)
    
    107 112
     
    
    ... ... @@ -150,4 +155,4 @@ class BasePresence(BaseModule):
    150 155
                 for node in extend:
    
    151 156
                     presence.addChild(node=node)
    
    152 157
     
    
    153
    -        self._con.send_stanza(presence)
    158
    +        self._client.send_stanza(presence)

  • nbxmpp/modules/util.py
    ... ... @@ -15,6 +15,8 @@
    15 15
     # You should have received a copy of the GNU General Public License
    
    16 16
     # along with this program; If not, see <http://www.gnu.org/licenses/>.
    
    17 17
     
    
    18
    +import logging
    
    19
    +import functools
    
    18 20
     import inspect
    
    19 21
     from urllib.parse import urlparse
    
    20 22
     from urllib.parse import unquote
    
    ... ... @@ -75,3 +77,12 @@ def make_func_arguments_string(func, self, args, kwargs):
    75 77
             arg_string += f'{name}={arg}, '
    
    76 78
         arg_string = arg_string[:-2]
    
    77 79
         return f'{func.__name__}({arg_string})'
    
    80
    +
    
    81
    +
    
    82
    +def log_calls(func):
    
    83
    +    @functools.wraps(func)
    
    84
    +    def func_wrapper(self, *args, **kwargs):
    
    85
    +        if self._log.isEnabledFor(logging.INFO):
    
    86
    +            self._log.info(make_func_arguments_string(func, self, args, kwargs))
    
    87
    +        return func(self, *args, **kwargs)
    
    88
    +    return func_wrapper