Mercurial > pidgin
diff libpurple/protocols/msn/object.c @ 30318:76049fde7ad2
Add support for Url/Url1 in MSN objects, which are used for buddy
icons when you're on the website.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 31 Jul 2010 23:39:40 +0000 |
parents | f1437342cc0e |
children | 23be655cc688 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/object.c Sat Jul 31 20:47:31 2010 +0000 +++ b/libpurple/protocols/msn/object.c Sat Jul 31 23:39:40 2010 +0000 @@ -96,15 +96,29 @@ GET_STRING_TAG(friendly, "Friendly"); GET_STRING_TAG(sha1d, "SHA1D"); GET_STRING_TAG(sha1c, "SHA1C"); + GET_STRING_TAG(url, "Url"); + GET_STRING_TAG(url1, "Url1"); /* If we are missing any of the required elements then discard the object */ - /* SHA1C is not always sent anymore */ if (obj->creator == NULL || obj->size == 0 || obj->type == 0 - || obj->location == NULL || obj->friendly == NULL - || obj->sha1d == NULL /*|| obj->sha1c == NULL*/) { + || obj->sha1d == NULL) { purple_debug_error("msn", "Discarding invalid msnobj: '%s'\n", str); msn_object_destroy(obj); - obj = NULL; + return NULL; + } + + if (obj->location == NULL || obj->friendly == NULL) { + /* Location/friendly are required for non-buddyicon objects */ + if (obj->type != MSN_OBJECT_USERTILE) { + purple_debug_error("msn", "Discarding invalid msnobj: '%s'\n", str); + msn_object_destroy(obj); + return NULL; + /* Buddy icon object can contain Url/Url1 instead */ + } else if (obj->url == NULL || obj->url1 == NULL) { + purple_debug_error("msn", "Discarding invalid msnobj: '%s'\n", str); + msn_object_destroy(obj); + return NULL; + } } return obj; @@ -284,6 +298,24 @@ obj->sha1c = g_strdup(sha1c); } +void +msn_object_set_url(MsnObject *obj, const char *url) +{ + g_return_if_fail(obj != NULL); + + g_free(obj->url); + obj->url = g_strdup(url); +} + +void +msn_object_set_url1(MsnObject *obj, const char *url) +{ + g_return_if_fail(obj != NULL); + + g_free(obj->url1); + obj->url1 = g_strdup(url); +} + const char * msn_object_get_creator(const MsnObject *obj) { @@ -352,6 +384,22 @@ } } +const char * +msn_object_get_url(const MsnObject *obj) +{ + g_return_val_if_fail(obj != NULL, NULL); + + return obj->url; +} + +const char * +msn_object_get_url1(const MsnObject *obj) +{ + g_return_val_if_fail(obj != NULL, NULL); + + return obj->url1; +} + static MsnObject * msn_object_find_local(const char *sha1) {