예제 #1
0
 def _NH_DialogSubscriptionGotNotify(self, notification):
     body = notification.data.body.decode(
     ) if notification.data.body else None
     if body and notification.data.content_type == RLSNotify.content_type:
         try:
             rls_notify = RLSNotify.parse(
                 '{content_type}\r\n\r\n{body}'.format(
                     content_type=notification.data.headers['Content-Type'],
                     body=body))
         except ParserError:
             pass
         else:
             if rls_notify.uri != self.xcap_manager.rls_dialog_uri:
                 return
             if self._dialog_version is None:
                 if not rls_notify.full_state:
                     self._dialog_subscriber.resubscribe()
             elif rls_notify.version <= self._dialog_version:
                 return
             elif not rls_notify.full_state and rls_notify.version > self._dialog_version + 1:
                 self._dialog_subscriber.resubscribe()
             self._dialog_version = rls_notify.version
             data = NotificationData(version=rls_notify.version,
                                     full_state=rls_notify.full_state,
                                     resource_map=dict(
                                         (resource.uri, resource)
                                         for resource in rls_notify))
             notification.center.post_notification(
                 'SIPAccountGotDialogState', sender=self, data=data)
예제 #2
0
 def _NH_DialogSubscriptionGotNotify(self, notification):
     if notification.data.body and notification.data.content_type == RLSNotify.content_type:
         try:
             rls_notify = RLSNotify.parse('{content_type}\r\n\r\n{body}'.format(content_type=notification.data.headers['Content-Type'], body=notification.data.body))
         except ParserError:
             pass
         else:
             if rls_notify.uri != self.xcap_manager.rls_dialog_uri:
                 return
             if self._dialog_version is None:
                 if not rls_notify.full_state:
                     self._dialog_subscriber.resubscribe()
             elif rls_notify.version <= self._dialog_version:
                 return
             elif not rls_notify.full_state and rls_notify.version > self._dialog_version + 1:
                 self._dialog_subscriber.resubscribe()
             self._dialog_version = rls_notify.version
             data = NotificationData(version=rls_notify.version, full_state=rls_notify.full_state, resource_map=dict((resource.uri, resource) for resource in rls_notify))
             notification.center.post_notification('SIPAccountGotDialogState', sender=self, data=data)