account_cbs = {}
-cdef void notify_added (account.PurpleAccount *account,
- const_char *remote_user, const_char *id,
- const_char *alias, const_char *message):
- debug.c_purple_debug_info("account", "%s", "notify-added\n")
- try:
- (<object>account_cbs["notify-added"])("notify-added: TODO")
- except KeyError:
- pass
-
-cdef void status_changed (account.PurpleAccount *account,
- status.PurpleStatus *status):
- debug.c_purple_debug_info("account", "%s", "status-changed\n")
- try:
- (<object>account_cbs["status-changed"])("status-changed: TODO")
- except KeyError:
- pass
-
-cdef void request_add (account.PurpleAccount *account,
- const_char *remote_user, const_char *id,
- const_char *alias, const_char *message):
- debug.c_purple_debug_info("account", "%s", "request-add\n")
- try:
- (<object>account_cbs["request-add"])("request-add: TODO")
- except KeyError:
- pass
-
-cdef void *request_authorize (account.PurpleAccount *account,
- const_char *remote_user, const_char *id,
- const_char *alias, const_char *message,
- glib.gboolean on_list,
- account.PurpleAccountRequestAuthorizationCb authorize_cb,
- account.PurpleAccountRequestAuthorizationCb deny_cb,
- void *user_data):
- debug.c_purple_debug_info("account", "%s", "request-authorize\n")
- try:
- (<object>account_cbs["request-authorize"])("request-authorize: TODO")
- return NULL
- except KeyError:
- pass
+cdef account.PurpleAccountRequestAuthorizationCb c_request_authorize_authorize_cb = NULL
+cdef account.PurpleAccountRequestAuthorizationCb c_request_authorize_deny_cb = NULL
+cdef void *c_request_authorize_user_data = NULL
+
+def call_authorize_cb():
+ global c_request_authorize_authorize_cb
+ global c_request_authorize_deny_cb
+ global c_request_authorize_user_data
+
+ if c_request_authorize_authorize_cb:
+ c_request_authorize_authorize_cb(c_request_authorize_user_data)
+ c_request_authorize_authorize_cb = NULL
+ c_request_authorize_deny_cb = NULL
+ c_request_authorize_user_data = NULL
+
+def call_deny_cb():
+ global c_request_authorize_authorize_cb
+ global c_request_authorize_deny_cb
+ global c_request_authorize_user_data
+
+ if c_request_authorize_deny_cb:
+ c_request_authorize_deny_cb(c_request_authorize_user_data)
+ c_request_authorize_authorize_cb = NULL
+ c_request_authorize_deny_cb = NULL
+ c_request_authorize_user_data = NULL
+
+cdef void notify_added(account.PurpleAccount *c_account, \
+ const_char *remote_user, const_char *id, const_char *alias, \
+ const_char *c_message):
+ """
+ A buddy who is already on this account's buddy list added this account to
+ their buddy list.
+ """
+ cdef connection.PurpleConnection *gc = \
+ account.purple_account_get_connection(c_account)
+
+ debug.purple_debug_info("account", "%s", "notify-added\n")
+
+ if alias:
+ remote_alias = <char *> alias
+ else:
+ remote_alias = None
+
+ if id:
+ username = <char *> id
+ elif connection.purple_connection_get_display_name(gc) != NULL:
+ username = connection.purple_connection_get_display_name(gc)
+ else:
+ username = account.purple_account_get_username(c_account)
+
+ protocol_id = account.purple_account_get_protocol_id(c_account)
+
+ if c_message:
+ message = <char *> c_message
+ else:
+ message = None
+
+ if account_cbs.has_key("notify-added"):
+ (<object> account_cbs["notify-added"])( \
+ (<char *> remote_user, remote_alias), \
+ (username, protocol_id), message)
+
+cdef void status_changed(account.PurpleAccount *c_account, \
+ status.PurpleStatus *c_status):
+ """
+ This account's status changed.
+ """
+ debug.purple_debug_info("account", "%s", "status-changed\n")
+
+ username = account.purple_account_get_username(c_account)
+ protocol_id = account.purple_account_get_protocol_id(c_account)
+
+ status_id = status.purple_status_get_id(c_status)
+ status_name = status.purple_status_get_name(c_status)
+
+ if account_cbs.has_key("status-changed"):
+ (<object> account_cbs["status-changed"])( \
+ (username, protocol_id), status_id, status_name)
+
+cdef void request_add(account.PurpleAccount *c_account, \
+ const_char *remote_user, const_char *id, const_char *alias, \
+ const_char *c_message):
+ """
+ Someone we don't have on our list added us; prompt to add them.
+ """
+ cdef connection.PurpleConnection *gc = \
+ account.purple_account_get_connection(c_account)
+
+ debug.purple_debug_info("account", "%s", "request-add\n")
+
+ if alias:
+ remote_alias = <char *> alias
+ else:
+ remote_alias = None
+
+ if id:
+ username = <char *> id
+ elif connection.purple_connection_get_display_name(gc) != NULL:
+ username = connection.purple_connection_get_display_name(gc)
+ else:
+ username = account.purple_account_get_username(c_account)
+
+ protocol_id = account.purple_account_get_protocol_id(c_account)
+
+ if c_message:
+ message = <char *> c_message
+ else:
+ message = None
+
+ if account_cbs.has_key("request-add"):
+ (<object> account_cbs["request-add"])( \
+ (<char *> remote_user, remote_alias), \
+ (username, protocol_id), message)
+
+cdef void *request_authorize(account.PurpleAccount *c_account, \
+ const_char *remote_user, const_char *id, const_char *alias, \
+ const_char *c_message, glib.gboolean on_list, \
+ account.PurpleAccountRequestAuthorizationCb authorize_cb, \
+ account.PurpleAccountRequestAuthorizationCb deny_cb, \
+ void *user_data):
+ """
+ Prompt for authorization when someone adds this account to their buddy
+ list. To authorize them to see this account's presence, call
+ authorize_cb(user_data) otherwise call deny_cb(user_data).
+ @return a UI-specific handle, as passed to #close_account_request.
+ """
+ cdef connection.PurpleConnection *gc = \
+ account.purple_account_get_connection(c_account)
+
+ debug.purple_debug_info("account", "%s", "request-authorize\n")
+
+ global c_request_authorize_authorize_cb
+ global c_request_authorize_deny_cb
+ global c_request_authorize_user_data
+
+ c_request_authorize_authorize_cb = authorize_cb
+ c_request_authorize_deny_cb = deny_cb
+ c_request_authorize_user_data = user_data
+
+ if alias:
+ remote_alias = <char *> alias
+ else:
+ remote_alias = None
+
+ if id:
+ username = <char *> id
+ elif connection.purple_connection_get_display_name(gc) != NULL:
+ username = connection.purple_connection_get_display_name(gc)
+ else:
+ username = account.purple_account_get_username(c_account)
+
+ protocol_id = account.purple_account_get_protocol_id(c_account)
+
+ if c_message:
+ message = <char *> c_message
+ else:
+ message = None
+
+ if account_cbs.has_key("request-authorize"):
+ (<object> account_cbs["request-authorize"])( \
+ (<char *> remote_user, remote_alias), \
+ (username, protocol_id), \
+ message, on_list, \
+ call_authorize_cb, call_deny_cb)
cdef void close_account_request (void *ui_handle):
- debug.c_purple_debug_info("account", "%s", "close-account-request\n")
- try:
- (<object>account_cbs["close-account-request"])("close-account-request: TODO")
- except KeyError:
- pass
+ """
+ Close a pending request for authorization. ui_handle is a handle as
+ returned by request_authorize.
+ """
+ debug.purple_debug_info("account", "%s", "close-account-request\n")
+
+ request.purple_request_close(request.PURPLE_REQUEST_ACTION, ui_handle)
+
+ if account_cbs.has_key("close-account-request"):
+ (<object> account_cbs["close-account-request"])()