def _NH_SIPApplicationDidStart(self, notification): account_manager = AccountManager() self.xcap_manager = XCAPManager(account_manager.default_account) notification_center = NotificationCenter() notification_center.add_observer(self, sender=self.xcap_manager) self.xcap_manager.load(os.path.realpath('xcap-cache')) self.xcap_manager.start()
class XCAPApplication(object): __metaclass__ = Singleton implements(IObserver) def __init__(self): self.application = SIPApplication() self.xcap_manager = None self.quit_event = Event() notification_center = NotificationCenter() notification_center.add_observer(self, sender=self.application) def start(self): self.application.start(FileBackend(os.path.realpath('test-config'))) @run_in_green_thread def stop(self): self.xcap_manager.stop() self.application.stop() def handle_notification(self, notification): handler = getattr(self, '_NH_%s' % notification.name, Null) handler(notification) @run_in_green_thread def _NH_SIPApplicationDidStart(self, notification): account_manager = AccountManager() self.xcap_manager = XCAPManager(account_manager.default_account) notification_center = NotificationCenter() notification_center.add_observer(self, sender=self.xcap_manager) self.xcap_manager.load(os.path.realpath('xcap-cache')) self.xcap_manager.start() def _NH_SIPApplicationDidEnd(self, notification): self.quit_event.set() def _NH_XCAPManagerDidChangeState(self, notification): print 'XCAP Manager state %s -> %s' % (notification.data.prev_state, notification.data.state) def _NH_XCAPManagerWillStart(self, notification): print 'XCAP Manager will start' def _NH_XCAPManagerDidStart(self, notification): print 'XCAP Manager did start' def _NH_XCAPManagerDidDiscoverServerCapabilities(self, notification): print ' contact list supported: %s' % notification.data.contactlist_supported print ' presence policies supported: %s' % notification.data.presence_policies_supported print ' dialoginfo policies supported: %s' % notification.data.dialoginfo_policies_supported print ' status icon supported: %s' % notification.data.status_icon_supported print ' offline status supported: %s' % notification.data.offline_status_supported def _NH_XCAPManagerWillEnd(self, notification): print 'XCAP Manager will end' def _NH_XCAPManagerDidEnd(self, notification): print 'XCAP Manager did end' def _NH_XCAPManagerDidReloadData(self, notification): print 'XCAP Manager reloaded data:' groups = dict.fromkeys(notification.data.groups) for group in groups: groups[group] = [] for contact in notification.data.contacts: if contact.group is not None: groups[contact.group].append(contact) print 'Buddies:' for group, contacts in groups.iteritems(): print ' %s:' % group for contact in contacts: if contact.name: print ' %s <%s>' % (contact.name, contact.uri) else: print ' %s' % contact.uri print ' subscribe-to-presence = %s' % contact.subscribe_to_presence print ' subscribe-to-dialoginfo = %s' % contact.subscribe_to_dialoginfo print ' presence-policies = %s' % (', '.join(p.id for p in contact.presence_policies) if contact.presence_policies else None) print ' dialoginfo-policies = %s' % (', '.join(p.id for p in contact.dialoginfo_policies) if contact.dialoginfo_policies else None) for attr, value in contact.attributes.iteritems(): print ' x: %s = %s' % (attr, value) print print 'Presence policies:' for policy in notification.data.presence_policies: print ' %s -> %s' % (policy.id, policy.action) if policy.sphere: print ' sphere = %s' % policy.sphere if policy.validity: print ' valid between:' for from_timestamp, until_timestamp in policy.validity: print ' %s - %s' % (from_timestamp, until_timestamp) if policy.multi_identity_conditions: print ' multi identity conditions:' for multi_condition in policy.multi_identity_conditions: if isinstance(multi_condition, CatchAllCondition) and multi_condition.exceptions: print ' anyone except' for exception in multi_condition.exceptions: if isinstance(exception, DomainException): print ' users from domain %s' % exception.domain elif isinstance(exception, UserException): print ' user %s' % exception.uri elif isinstance(multi_condition, CatchAllCondition): print ' anyone' elif isinstance(multi_condition, DomainCondition) and multi_condition.exceptions: print ' anyone from domain %s except' % multi_condition.domain for exception in multi_condition.exceptions: if isinstance(exception, UserException): print ' user %s' % exception.uri elif isinstance(multi_condition, DomainCondition): print ' anyone from domain %s' % multi_condition.domain if policy.provide_devices is All: print ' provide-devices = All' elif policy.provide_devices: print ' provide-devices:' for prv in policy.provide_devices: if isinstance(prv, Class): print ' class = %s' % prv elif isinstance(prv, OccurenceID): print ' occurence-id = %s' % prv elif isinstance(prv, DeviceID): print ' device-id = %s' % prv else: print ' unknown = %s(%r)' % (prv, type(prv).__name__) if policy.provide_persons is All: print ' provide-persons = All' elif policy.provide_persons: print ' provide-persons:' for prv in policy.provide_persons: if isinstance(prv, Class): print ' class = %s' % prv elif isinstance(prv, OccurenceID): print ' occurence-id = %s' % prv else: print ' unknown = %s(%r)' % (prv, type(prv).__name__) if policy.provide_services is All: print ' provide-services = All' elif policy.provide_services: print ' provide-services:' for prv in policy.provide_services: if isinstance(prv, Class): print ' class = %s' % prv elif isinstance(prv, OccurenceID): print ' occurence-id = %s' % prv elif isinstance(prv, ServiceURI): print ' service-uri = %s' % prv elif isinstance(prv, ServiceURIScheme): print ' service-uri-scheme = %s' % prv else: print ' unknown = %s(%r)' % (prv, type(prv).__name__) print ' provide-activities = %s' % policy.provide_activities print ' provide-class = %s' % policy.provide_class print ' provide-device-id = %s' % policy.provide_device_id print ' provide-mood = %s' % policy.provide_mood print ' provide-place-is = %s' % policy.provide_place_is print ' provide-place-type = %s' % policy.provide_place_type print ' provide-privacy = %s' % policy.provide_privacy print ' provide-relationship = %s' % policy.provide_relationship print ' provide-status-icon = %s' % policy.provide_status_icon print ' provide-sphere = %s' % policy.provide_sphere print ' provide-time-offset = %s' % policy.provide_time_offset print ' provide-user-input = %s' % policy.provide_user_input print ' provide-unknown-attributes = %s' % policy.provide_unknown_attributes print ' provide-all-attributes = %s' % policy.provide_all_attributes print print 'Dialog-info policies:' for policy in notification.data.dialoginfo_policies: print ' %s -> %s' % (policy.id, policy.action) if policy.sphere: print ' sphere = %s' % policy.sphere if policy.validity: print ' valid between:' for from_timestamp, until_timestamp in policy.validity: print ' %s - %s' % (from_timestamp, until_timestamp) print print 'RLS services:' for service in notification.data.services: print ' %s -> %s' % (service.uri, ', '.join(service.packages)) for entry in service.entries: print ' %s' % entry print print 'Offline status:' if notification.data.offline_status: print ' Note: %s' % notification.data.offline_status.note print ' Activity: %s' % notification.data.offline_status.activity else: print ' Missing'
class XCAPApplication(object): __metaclass__ = Singleton implements(IObserver) def __init__(self): self.application = SIPApplication() self.xcap_manager = None self.quit_event = Event() notification_center = NotificationCenter() notification_center.add_observer(self, sender=self.application) def start(self): self.application.start(FileBackend(os.path.realpath('test-config'))) @run_in_green_thread def stop(self): self.xcap_manager.stop() self.application.stop() def handle_notification(self, notification): handler = getattr(self, '_NH_%s' % notification.name, Null) handler(notification) @run_in_green_thread def _NH_SIPApplicationDidStart(self, notification): account_manager = AccountManager() self.xcap_manager = XCAPManager(account_manager.default_account) notification_center = NotificationCenter() notification_center.add_observer(self, sender=self.xcap_manager) self.xcap_manager.load(os.path.realpath('xcap-cache')) self.xcap_manager.start() def _NH_SIPApplicationDidEnd(self, notification): self.quit_event.set() def _NH_XCAPManagerDidChangeState(self, notification): print 'XCAP Manager state %s -> %s' % (notification.data.prev_state, notification.data.state) def _NH_XCAPManagerWillStart(self, notification): print 'XCAP Manager will start' def _NH_XCAPManagerDidStart(self, notification): print 'XCAP Manager did start' def _NH_XCAPManagerDidDiscoverServerCapabilities(self, notification): print ' contact list supported: %s' % notification.data.contactlist_supported print ' presence policies supported: %s' % notification.data.presence_policies_supported print ' dialoginfo policies supported: %s' % notification.data.dialoginfo_policies_supported print ' status icon supported: %s' % notification.data.status_icon_supported print ' offline status supported: %s' % notification.data.offline_status_supported def _NH_XCAPManagerWillEnd(self, notification): print 'XCAP Manager will end' def _NH_XCAPManagerDidEnd(self, notification): print 'XCAP Manager did end' def _NH_XCAPManagerDidReloadData(self, notification): print 'XCAP Manager reloaded data:' groups = dict.fromkeys(notification.data.groups) for group in groups: groups[group] = [] for contact in notification.data.contacts: if contact.group is not None: groups[contact.group].append(contact) print 'Buddies:' for group, contacts in groups.iteritems(): print ' %s:' % group for contact in contacts: if contact.name: print ' %s <%s>' % (contact.name, contact.uri) else: print ' %s' % contact.uri print ' subscribe-to-presence = %s' % contact.subscribe_to_presence print ' subscribe-to-dialoginfo = %s' % contact.subscribe_to_dialoginfo print ' presence-policies = %s' % ( ', '.join(p.id for p in contact.presence_policies) if contact.presence_policies else None) print ' dialoginfo-policies = %s' % ( ', '.join(p.id for p in contact.dialoginfo_policies) if contact.dialoginfo_policies else None) for attr, value in contact.attributes.iteritems(): print ' x: %s = %s' % (attr, value) print print 'Presence policies:' for policy in notification.data.presence_policies: print ' %s -> %s' % (policy.id, policy.action) if policy.sphere: print ' sphere = %s' % policy.sphere if policy.validity: print ' valid between:' for from_timestamp, until_timestamp in policy.validity: print ' %s - %s' % (from_timestamp, until_timestamp) if policy.multi_identity_conditions: print ' multi identity conditions:' for multi_condition in policy.multi_identity_conditions: if isinstance( multi_condition, CatchAllCondition) and multi_condition.exceptions: print ' anyone except' for exception in multi_condition.exceptions: if isinstance(exception, DomainException): print ' users from domain %s' % exception.domain elif isinstance(exception, UserException): print ' user %s' % exception.uri elif isinstance(multi_condition, CatchAllCondition): print ' anyone' elif isinstance( multi_condition, DomainCondition) and multi_condition.exceptions: print ' anyone from domain %s except' % multi_condition.domain for exception in multi_condition.exceptions: if isinstance(exception, UserException): print ' user %s' % exception.uri elif isinstance(multi_condition, DomainCondition): print ' anyone from domain %s' % multi_condition.domain if policy.provide_devices is All: print ' provide-devices = All' elif policy.provide_devices: print ' provide-devices:' for prv in policy.provide_devices: if isinstance(prv, Class): print ' class = %s' % prv elif isinstance(prv, OccurenceID): print ' occurence-id = %s' % prv elif isinstance(prv, DeviceID): print ' device-id = %s' % prv else: print ' unknown = %s(%r)' % ( prv, type(prv).__name__) if policy.provide_persons is All: print ' provide-persons = All' elif policy.provide_persons: print ' provide-persons:' for prv in policy.provide_persons: if isinstance(prv, Class): print ' class = %s' % prv elif isinstance(prv, OccurenceID): print ' occurence-id = %s' % prv else: print ' unknown = %s(%r)' % ( prv, type(prv).__name__) if policy.provide_services is All: print ' provide-services = All' elif policy.provide_services: print ' provide-services:' for prv in policy.provide_services: if isinstance(prv, Class): print ' class = %s' % prv elif isinstance(prv, OccurenceID): print ' occurence-id = %s' % prv elif isinstance(prv, ServiceURI): print ' service-uri = %s' % prv elif isinstance(prv, ServiceURIScheme): print ' service-uri-scheme = %s' % prv else: print ' unknown = %s(%r)' % ( prv, type(prv).__name__) print ' provide-activities = %s' % policy.provide_activities print ' provide-class = %s' % policy.provide_class print ' provide-device-id = %s' % policy.provide_device_id print ' provide-mood = %s' % policy.provide_mood print ' provide-place-is = %s' % policy.provide_place_is print ' provide-place-type = %s' % policy.provide_place_type print ' provide-privacy = %s' % policy.provide_privacy print ' provide-relationship = %s' % policy.provide_relationship print ' provide-status-icon = %s' % policy.provide_status_icon print ' provide-sphere = %s' % policy.provide_sphere print ' provide-time-offset = %s' % policy.provide_time_offset print ' provide-user-input = %s' % policy.provide_user_input print ' provide-unknown-attributes = %s' % policy.provide_unknown_attributes print ' provide-all-attributes = %s' % policy.provide_all_attributes print print 'Dialog-info policies:' for policy in notification.data.dialoginfo_policies: print ' %s -> %s' % (policy.id, policy.action) if policy.sphere: print ' sphere = %s' % policy.sphere if policy.validity: print ' valid between:' for from_timestamp, until_timestamp in policy.validity: print ' %s - %s' % (from_timestamp, until_timestamp) print print 'RLS services:' for service in notification.data.services: print ' %s -> %s' % (service.uri, ', '.join(service.packages)) for entry in service.entries: print ' %s' % entry print print 'Offline status:' if notification.data.offline_status: print ' Note: %s' % notification.data.offline_status.note print ' Activity: %s' % notification.data.offline_status.activity else: print ' Missing'