diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-04-27 12:56:02 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-04-27 12:56:02 +0800 |
commit | 5047925271f0963da5a312976e2ee3be01846104 (patch) | |
tree | 6e989d8d9559a8514fec7dec7896ba48cafab040 /libempathy | |
parent | 93f10e9c7dad9be29c2f6248058cdd61123ed9d6 (diff) | |
parent | 4c78cb34c23e512f09122550c8f95fa0dd917a45 (diff) | |
download | gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.tar gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.tar.gz gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.tar.bz2 gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.tar.lz gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.tar.xz gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.tar.zst gsoc2013-empathy-5047925271f0963da5a312976e2ee3be01846104.zip |
Merge branch 'detailed-errors' into empathy-skype
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-utils.c | 91 | ||||
-rw-r--r-- | libempathy/empathy-utils.h | 31 |
2 files changed, 114 insertions, 8 deletions
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 8d4cd8d68..dfc2595c3 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -409,18 +409,33 @@ empathy_account_get_error_message (TpAccount *account, { const gchar *dbus_error; const gchar *message; - const GHashTable *details = NULL; + const GHashTable *details = NULL; TpConnectionStatusReason reason; + guint skype_reason; + gboolean skype_reason_valid; dbus_error = tp_account_get_detailed_error (account, &details); - if (user_requested != NULL) - { - if (tp_asv_get_boolean (details, "user-requested", NULL)) - *user_requested = TRUE; - else - *user_requested = FALSE; - } + if (user_requested != NULL) + { + if (tp_asv_get_boolean (details, "user-requested", NULL)) + *user_requested = TRUE; + else + *user_requested = FALSE; + } + + /* Skype certification requires us to return the precise error message. + * Check to see if skype-reason is defined, if it is, try to use that + * over the dbus error message */ + skype_reason = tp_asv_get_uint32 (details, "skype-reason", + &skype_reason_valid); + + if (skype_reason_valid) + { + message = empathy_skype_reason_to_string (skype_reason); + if (message != NULL) + return message; + } message = empathy_dbus_error_name_get_default_message (dbus_error); if (message != NULL) @@ -871,3 +886,63 @@ empathy_format_currency (gint amount, return money; } +const gchar * +empathy_skype_reason_to_string (guint skype_reason) +{ + switch (skype_reason) + { + case EMP_SKYPE_LOGOUTREASON_NONE: + return _("No Reason"); + case EMP_SKYPE_LOGOUTREASON_LOGOUT_CALLED: + return _("Requested"); + case EMP_SKYPE_LOGOUTREASON_HTTPS_PROXY_AUTH_FAILED: + return _("HTTPS proxy authentication failed"); + case EMP_SKYPE_LOGOUTREASON_SOCKS_PROXY_AUTH_FAILED: + return _("SOCKS proxy authentication failed"); + case EMP_SKYPE_LOGOUTREASON_P2P_CONNECT_FAILED: + return _("Peer-to-peer connection failed"); + case EMP_SKYPE_LOGOUTREASON_SERVER_CONNECT_FAILED: + return _("Server connection failed"); + case EMP_SKYPE_LOGOUTREASON_SERVER_OVERLOADED: + return _("Server overloaded"); + case EMP_SKYPE_LOGOUTREASON_DB_IN_USE: + return _("Local database in use"); + case EMP_SKYPE_LOGOUTREASON_INVALID_SKYPENAME: + return _("Invalid username"); + case EMP_SKYPE_LOGOUTREASON_INVALID_EMAIL: + return _("Invalid email address"); + case EMP_SKYPE_LOGOUTREASON_UNACCEPTABLE_PASSWORD: + return _("Unacceptable password"); + case EMP_SKYPE_LOGOUTREASON_SKYPENAME_TAKEN: + return _("Username already taken"); + case EMP_SKYPE_LOGOUTREASON_REJECTED_AS_UNDERAGE: + return _("Rejected as underage"); + case EMP_SKYPE_LOGOUTREASON_NO_SUCH_IDENTITY: + return _("No such identity"); + case EMP_SKYPE_LOGOUTREASON_INCORRECT_PASSWORD: + return _("Incorrect password"); + case EMP_SKYPE_LOGOUTREASON_TOO_MANY_LOGIN_ATTEMPTS: + return _("Too many login attempts"); + case EMP_SKYPE_LOGOUTREASON_PASSWORD_HAS_CHANGED: + return _("Password has changed"); + case EMP_SKYPE_LOGOUTREASON_PERIODIC_UIC_UPDATE_FAILED: + /* FIXME: what now? */ + return _("Periodic UIC update failed"); + case EMP_SKYPE_LOGOUTREASON_DB_DISK_FULL: + return _("Cannot write to local database: disk full"); + case EMP_SKYPE_LOGOUTREASON_DB_IO_ERROR: + return _("Cannot write to local database: input/output error"); + case EMP_SKYPE_LOGOUTREASON_DB_CORRUPT: + return _("Local database corrupt"); + case EMP_SKYPE_LOGOUTREASON_DB_FAILURE: + return _("Local database failure"); + case EMP_SKYPE_LOGOUTREASON_INVALID_APP_ID: + return _("Invalid application ID"); + case EMP_SKYPE_LOGOUTREASON_APP_ID_BLACKLISTED: + return _("Application ID blacklisted"); + case EMP_SKYPE_LOGOUTREASON_UNSUPPORTED_VERSION: + return _("Unsupported Skype version (software upgrade required)"); + } + + g_return_val_if_reached (NULL); +} diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h index 7ec96be13..f78007aeb 100644 --- a/libempathy/empathy-utils.h +++ b/libempathy/empathy-utils.h @@ -104,6 +104,37 @@ gchar * empathy_get_x509_certificate_hostname (gnutls_x509_crt_t cert); gchar *empathy_format_currency (gint amount, guint scale, const gchar *currency); +/* this enum is taken from SkypeKit */ +enum { + EMP_SKYPE_LOGOUTREASON_NONE = 0, /* No reason given */ + EMP_SKYPE_LOGOUTREASON_LOGOUT_CALLED = 1, /* manual logout (or unknown reason from previous session) */ + EMP_SKYPE_LOGOUTREASON_HTTPS_PROXY_AUTH_FAILED = 2, /* sync errors at login/registration */ + EMP_SKYPE_LOGOUTREASON_SOCKS_PROXY_AUTH_FAILED = 3, /* sync errors at login/registration */ + EMP_SKYPE_LOGOUTREASON_P2P_CONNECT_FAILED = 4, /* sync errors at login/registration */ + EMP_SKYPE_LOGOUTREASON_SERVER_CONNECT_FAILED = 5, /* sync errors at login/registration */ + EMP_SKYPE_LOGOUTREASON_SERVER_OVERLOADED = 6, /* sync errors at login/registration */ + EMP_SKYPE_LOGOUTREASON_DB_IN_USE = 7, /* sync errors at login/registration */ + EMP_SKYPE_LOGOUTREASON_INVALID_SKYPENAME = 8, /* sync errors at registration */ + EMP_SKYPE_LOGOUTREASON_INVALID_EMAIL = 9, /* sync errors at registration */ + EMP_SKYPE_LOGOUTREASON_UNACCEPTABLE_PASSWORD = 10, /* sync errors at registration */ + EMP_SKYPE_LOGOUTREASON_SKYPENAME_TAKEN = 11, /* sync errors at registration */ + EMP_SKYPE_LOGOUTREASON_REJECTED_AS_UNDERAGE = 12, /* sync errors at registration */ + EMP_SKYPE_LOGOUTREASON_NO_SUCH_IDENTITY = 13, /* sync errors at login */ + EMP_SKYPE_LOGOUTREASON_INCORRECT_PASSWORD = 14, /* sync errors at login */ + EMP_SKYPE_LOGOUTREASON_TOO_MANY_LOGIN_ATTEMPTS = 15, /* sync errors at login */ + EMP_SKYPE_LOGOUTREASON_PASSWORD_HAS_CHANGED = 16, /* async errors (can happen anytime while logged in) */ + EMP_SKYPE_LOGOUTREASON_PERIODIC_UIC_UPDATE_FAILED = 17, /* async errors (can happen anytime while logged in) */ + EMP_SKYPE_LOGOUTREASON_DB_DISK_FULL = 18, /* async errors (can happen anytime while logged in) */ + EMP_SKYPE_LOGOUTREASON_DB_IO_ERROR = 19, /* async errors (can happen anytime while logged in) */ + EMP_SKYPE_LOGOUTREASON_DB_CORRUPT = 20, /* async errors (can happen anytime while logged in) */ + EMP_SKYPE_LOGOUTREASON_DB_FAILURE = 21, /* deprecated (superceded by more detailed DB_* errors) */ + EMP_SKYPE_LOGOUTREASON_INVALID_APP_ID = 22, /* platform sdk */ + EMP_SKYPE_LOGOUTREASON_APP_ID_BLACKLISTED = 23, /* platform sdk */ + EMP_SKYPE_LOGOUTREASON_UNSUPPORTED_VERSION = 24, /* forced upgrade/discontinuation */ +}; + +const gchar *empathy_skype_reason_to_string (guint skype_reason); + G_END_DECLS #endif /* __EMPATHY_UTILS_H__ */ |