libpurple/protocols/jabber/message.c

branch
soc.2013.gobjectification.plugins
changeset 37134
07746c9a04bf
parent 37133
832cd077145e
parent 35823
268a9d3b3fd7
child 37135
6271bcdee576
equal deleted inserted replaced
37133:832cd077145e 37134:07746c9a04bf
831 break; 831 break;
832 } 832 }
833 jabber_message_free(jm); 833 jabber_message_free(jm);
834 } 834 }
835 835
836 static const gchar *
837 jabber_message_get_mimetype_from_ext(const gchar *ext)
838 {
839 if (strcmp(ext, "png") == 0) {
840 return "image/png";
841 } else if (strcmp(ext, "gif") == 0) {
842 return "image/gif";
843 } else if (strcmp(ext, "jpg") == 0) {
844 return "image/jpeg";
845 } else if (strcmp(ext, "tif") == 0) {
846 return "image/tif";
847 } else {
848 return "image/x-icon"; /* or something... */
849 }
850 }
851
852 static gboolean 836 static gboolean
853 jabber_conv_support_custom_smileys(JabberStream *js, 837 jabber_conv_support_custom_smileys(JabberStream *js,
854 PurpleConversation *conv, 838 PurpleConversation *conv,
855 const gchar *who) 839 const gchar *who)
856 { 840 {
918 conv = purple_conversations_find_with_account(jm->to, account); 902 conv = purple_conversations_find_with_account(jm->to, account);
919 903
920 if (!jabber_conv_support_custom_smileys(jm->js, conv, jm->to)) 904 if (!jabber_conv_support_custom_smileys(jm->js, conv, jm->to))
921 return NULL; 905 return NULL;
922 906
923 found_smileys = purple_smiley_find(purple_smiley_custom_get_list(), 907 found_smileys = purple_smiley_parser_find(
924 xhtml, TRUE); 908 purple_smiley_custom_get_list(), xhtml, TRUE);
925 if (!found_smileys) 909 if (!found_smileys)
926 return NULL; 910 return NULL;
927 911
928 for (it = found_smileys; it; it = it_next) { 912 for (it = found_smileys; it; it = it_next) {
929 PurpleSmiley *smiley = it->data; 913 PurpleSmiley *smiley = it->data;
930 PurpleStoredImage *smiley_image; 914 PurpleImage *smiley_image;
931 gboolean valid = TRUE; 915 gboolean valid = TRUE;
932 916
933 it_next = g_list_next(it); 917 it_next = g_list_next(it);
934 918
935 smiley_image = purple_smiley_get_image(smiley); 919 smiley_image = purple_smiley_get_image(smiley);
936 if (!smiley_image) { 920 if (!smiley_image) {
937 valid = FALSE; 921 valid = FALSE;
938 purple_debug_warning("jabber", "broken smiley %s", 922 purple_debug_warning("jabber", "broken smiley %s",
939 purple_smiley_get_shortcut(smiley)); 923 purple_smiley_get_shortcut(smiley));
940 } else if (purple_imgstore_get_size(smiley_image) > 924 } else if (purple_image_get_size(smiley_image) >
941 JABBER_DATA_MAX_SIZE) 925 JABBER_DATA_MAX_SIZE)
942 { 926 {
943 has_too_large_smiley = TRUE; 927 has_too_large_smiley = TRUE;
944 valid = FALSE; 928 valid = FALSE;
945 purple_debug_warning("jabber", "Refusing to send " 929 purple_debug_warning("jabber", "Refusing to send "
961 if (!found_smileys) 945 if (!found_smileys)
962 return NULL; 946 return NULL;
963 947
964 for (it = found_smileys; it; it = g_list_next(it)) { 948 for (it = found_smileys; it; it = g_list_next(it)) {
965 PurpleSmiley *smiley = it->data; 949 PurpleSmiley *smiley = it->data;
966 PurpleStoredImage *smiley_image; 950 PurpleImage *smiley_image;
967 const gchar *shortcut = purple_smiley_get_shortcut(smiley); 951 const gchar *shortcut = purple_smiley_get_shortcut(smiley);
968 const gchar *mimetype; 952 const gchar *mimetype;
969 JabberData *jdata; 953 JabberData *jdata;
970 954
971 /* the object has been sent before */ 955 /* the object has been sent before */
973 continue; 957 continue;
974 958
975 smiley_image = purple_smiley_get_image(smiley); 959 smiley_image = purple_smiley_get_image(smiley);
976 g_assert(smiley_image != NULL); 960 g_assert(smiley_image != NULL);
977 961
978 mimetype = jabber_message_get_mimetype_from_ext( 962 mimetype = purple_image_get_mimetype(smiley_image);
979 purple_imgstore_get_extension(smiley_image)); 963 if (!mimetype) {
964 purple_debug_error("jabber",
965 "unknown mime type for image");
966 continue;
967 }
980 968
981 jdata = jabber_data_create_from_data( 969 jdata = jabber_data_create_from_data(
982 purple_imgstore_get_data(smiley_image), 970 purple_image_get_data(smiley_image),
983 purple_imgstore_get_size(smiley_image), 971 purple_image_get_size(smiley_image),
984 mimetype, FALSE, jm->js); 972 mimetype, FALSE, jm->js);
985 973
986 purple_debug_info("jabber", "cache local smiley alt=%s, cid=%s", 974 purple_debug_info("jabber", "cache local smiley alt=%s, cid=%s",
987 shortcut, jabber_data_get_cid(jdata)); 975 shortcut, jabber_data_get_cid(jdata));
988 jabber_data_associate_local(jdata, shortcut); 976 jabber_data_associate_local(jdata, shortcut);
989 } 977 }
990 978
991 g_list_free(found_smileys); 979 g_list_free(found_smileys);
992 980
993 smileyfied_xhtml = purple_smiley_parse_custom(xhtml, 981 smileyfied_xhtml = purple_smiley_parser_replace(
982 purple_smiley_custom_get_list(), xhtml,
994 jabber_message_smileyify_cb, NULL); 983 jabber_message_smileyify_cb, NULL);
995 984
996 return smileyfied_xhtml; 985 return smileyfied_xhtml;
997 } 986 }
998 987

mercurial