libpurple/protocols/facebook/util.c

Wed, 08 Feb 2023 08:56:07 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 08 Feb 2023 08:56:07 -0600
changeset 42048
8d4a5f33faa8
parent 41977
bade7303795a
child 42127
18acb99a0fa6
permissions
-rw-r--r--

Add a PurpleAccount parameter to the PurpleMessage constructors

This is the first step of making PurpleMessage use PurpleContactInfo's instead
of bare strings for authors and recipients.

Testing Done:
Connected and XMPP account and sent and received some messages in a MUC.

Bugs closed: PIDGIN-17724

Reviewed at https://reviews.imfreedom.org/r/2203/

37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
1 /* purple
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
2 *
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
5 * source distribution.
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
6 *
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
10 * (at your option) any later version.
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
11 *
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
15 * GNU General Public License for more details.
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
16 *
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
20 */
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
21
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
22 #include <glib.h>
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40358
diff changeset
23 #include <glib/gi18n-lib.h>
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
24
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
25 #include <gio/gio.h>
37278
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
26 #include <stdarg.h>
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
27 #include <string.h>
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
28
40358
e6fe6fc1f516 move all protocols, purple plugins, and purple tests to use purple.h instead of including files individually
Gary Kramlich <grim@reaperworld.com>
parents: 40195
diff changeset
29 #include <purple.h>
37309
556eea7a45da facebook: merged local glibcompat.h into libpurple's
James Geboski <jgeboski@gmail.com>
parents: 37290
diff changeset
30
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
31 #include "util.h"
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
32
37284
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
33 GQuark
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
34 fb_util_error_quark(void)
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
35 {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
36 static GQuark q = 0;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
37
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
38 if (G_UNLIKELY(q == 0)) {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
39 q = g_quark_from_static_string("fb-util-error-quark");
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
40 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
41
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
42 return q;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
43 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
44
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
45 PurpleBuddy *
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
46 fb_util_account_find_buddy(PurpleAccount *acct, PurpleChatConversation *chat,
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
47 const gchar *search, GError **error)
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
48 {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
49 const gchar *alias;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
50 const gchar *name;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
51 GSList *buddies;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
52 GSList *l;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
53 guint retc;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
54 PurpleBuddy *ret = NULL;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
55
37285
2a5decfdeb7b facebook: use proper type checks
James Geboski <jgeboski@gmail.com>
parents: 37284
diff changeset
56 g_return_val_if_fail(PURPLE_IS_ACCOUNT(acct), NULL);
37284
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
57 g_return_val_if_fail(search != NULL, NULL);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
58
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
59 buddies = purple_blist_find_buddies(acct, NULL);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
60
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
61 for (retc = 0, l = buddies; l != NULL; l = l->next) {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
62 name = purple_buddy_get_name(l->data);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
63 alias = purple_buddy_get_alias(l->data);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
64
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
65 if ((chat != NULL) &&
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
66 !purple_chat_conversation_has_user(chat, name))
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
67 {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
68 continue;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
69 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
70
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
71 if (g_ascii_strcasecmp(name, search) == 0) {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
72 ret = l->data;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
73 retc++;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
74 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
75
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
76 if (g_ascii_strcasecmp(alias, search) == 0) {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
77 ret = l->data;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
78 retc++;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
79 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
80 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
81
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
82 if (retc == 0) {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
83 g_set_error(error, FB_UTIL_ERROR, FB_UTIL_ERROR_GENERAL,
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
84 _("Buddy %s not found"), search);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
85 } else if (retc > 1) {
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
86 g_set_error(error, FB_UTIL_ERROR, FB_UTIL_ERROR_GENERAL,
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
87 _("Buddy name %s is ambiguous"), search);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
88 ret = NULL;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
89 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
90
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
91 g_slist_free(buddies);
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
92 return ret;
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
93 }
53cb588d8760 facebook: implemented kicking/leaving group chats
James Geboski <jgeboski@gmail.com>
parents: 37278
diff changeset
94
37278
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
95 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
96 fb_util_debug(PurpleDebugLevel level, const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
97 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
98 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
99
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
100 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
101 fb_util_vdebug(level, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
102 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
103 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
104
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
105 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
106 fb_util_vdebug(PurpleDebugLevel level, const gchar *format, va_list ap)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
107 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
108 gboolean unsafe;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
109 gboolean verbose;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
110 gchar *str;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
111
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
112 g_return_if_fail(format != NULL);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
113
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
114 unsafe = (level & FB_UTIL_DEBUG_FLAG_UNSAFE) != 0;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
115 verbose = (level & FB_UTIL_DEBUG_FLAG_VERBOSE) != 0;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
116
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
117 if ((unsafe && !purple_debug_is_unsafe()) ||
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
118 (verbose && !purple_debug_is_verbose()))
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
119 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
120 return;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
121 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
122
37289
fb6acaae2788 facebook: fixed broken logging from invalid level
James Geboski <jgeboski@gmail.com>
parents: 37285
diff changeset
123 /* Ensure all local flags are removed */
fb6acaae2788 facebook: fixed broken logging from invalid level
James Geboski <jgeboski@gmail.com>
parents: 37285
diff changeset
124 level &= ~FB_UTIL_DEBUG_FLAG_ALL;
fb6acaae2788 facebook: fixed broken logging from invalid level
James Geboski <jgeboski@gmail.com>
parents: 37285
diff changeset
125
37278
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
126 str = g_strdup_vprintf(format, ap);
40765
a5381c20e802 Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40541
diff changeset
127 purple_debug(level, "facebook", "%s", str);
37278
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
128 g_free(str);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
129 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
130
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
131 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
132 fb_util_debug_misc(const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
133 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
134 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
135
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
136 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
137 fb_util_vdebug(PURPLE_DEBUG_MISC, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
138 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
139 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
140
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
141 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
142 fb_util_debug_info(const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
143 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
144 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
145
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
146 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
147 fb_util_vdebug(PURPLE_DEBUG_INFO, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
148 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
149 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
150
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
151 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
152 fb_util_debug_warning(const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
153 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
154 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
155
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
156 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
157 fb_util_vdebug(PURPLE_DEBUG_WARNING, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
158 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
159 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
160
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
161 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
162 fb_util_debug_error(const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
163 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
164 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
165
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
166 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
167 fb_util_vdebug(PURPLE_DEBUG_ERROR, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
168 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
169 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
170
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
171 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
172 fb_util_debug_fatal(const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
173 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
174 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
175
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
176 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
177 fb_util_vdebug(PURPLE_DEBUG_FATAL, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
178 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
179 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
180
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
181 void
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
182 fb_util_debug_hexdump(PurpleDebugLevel level, const GByteArray *bytes,
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
183 const gchar *format, ...)
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
184 {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
185 gchar c;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
186 guint i;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
187 guint j;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
188 GString *gstr;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
189 va_list ap;
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
190
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
191 static const gchar *indent = " ";
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
192
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
193 g_return_if_fail(bytes != NULL);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
194
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
195 if (format != NULL) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
196 va_start(ap, format);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
197 fb_util_vdebug(level, format, ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
198 va_end(ap);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
199 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
200
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
201 gstr = g_string_sized_new(80);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
202
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
203 for (i = 0; i < bytes->len; i += 16) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
204 g_string_append_printf(gstr, "%s%08x ", indent, i);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
205
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
206 for (j = 0; j < 16; j++) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
207 if ((i + j) < bytes->len) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
208 g_string_append_printf(gstr, "%02x ",
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
209 bytes->data[i + j]);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
210 } else {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
211 g_string_append(gstr, " ");
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
212 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
213
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
214 if (j == 7) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
215 g_string_append_c(gstr, ' ');
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
216 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
217 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
218
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
219 g_string_append(gstr, " |");
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
220
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
221 for (j = 0; (j < 16) && ((i + j) < bytes->len); j++) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
222 c = bytes->data[i + j];
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
223
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
224 if (!g_ascii_isprint(c) || g_ascii_isspace(c)) {
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
225 c = '.';
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
226 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
227
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
228 g_string_append_c(gstr, c);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
229 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
230
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
231 g_string_append_c(gstr, '|');
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
232 fb_util_debug(level, "%s", gstr->str);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
233 g_string_erase(gstr, 0, -1);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
234 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
235
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
236 g_string_append_printf(gstr, "%s%08x", indent, i);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
237 fb_util_debug(level, "%s", gstr->str);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
238 g_string_free(gstr, TRUE);
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
239 }
3ee1b27dacc4 facebook: added debugging utilities and messages
James Geboski <jgeboski@gmail.com>
parents: 37260
diff changeset
240
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
241 gchar *
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
242 fb_util_get_locale(void)
37260
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
243 {
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
244 const gchar * const *langs;
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
245 const gchar *lang;
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
246 gchar *chr;
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
247 guint i;
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
248
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
249 static const gchar chrs[] = {'.', '@'};
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
250
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
251 langs = g_get_language_names();
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
252 lang = langs[0];
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
253
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
254 if (purple_strequal(lang, "C")) {
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
255 return g_strdup("en_US");
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
256 }
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
257
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
258 for (i = 0; i < G_N_ELEMENTS(chrs); i++) {
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
259 chr = strchr(lang, chrs[i]);
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
260
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
261 if (chr != NULL) {
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
262 return g_strndup(lang, chr - lang);
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
263 }
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
264 }
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
265
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
266 return g_strdup(lang);
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
267 }
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
268
473934b0c408 facebook: use working locale language
James Geboski <jgeboski@gmail.com>
parents: 37258
diff changeset
269 gchar *
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
270 fb_util_rand_alnum(guint len)
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
271 {
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
272 gchar *ret;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
273 GRand *rand;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
274 guint i;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
275 guint j;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
276
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
277 static const gchar chars[] =
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
278 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
279 "abcdefghijklmnopqrstuvwxyz"
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
280 "0123456789";
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
281 static const gsize charc = G_N_ELEMENTS(chars) - 1;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
282
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
283 g_return_val_if_fail(len > 0, NULL);
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
284 rand = g_rand_new();
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
285 ret = g_new(gchar, len + 1);
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
286
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
287 for (i = 0; i < len; i++) {
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
288 j = g_rand_int_range(rand, 0, charc);
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
289 ret[i] = chars[j];
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
290 }
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
291
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
292 ret[len] = 0;
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
293 g_rand_free(rand);
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
294 return ret;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
295 }
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
296
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
297 static void
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
298 fb_util_request_buddy_ok(gpointer *request_data, PurpleRequestFields *fields)
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
299 {
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
300 FbUtilRequestBuddyFunc func = request_data[0];
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
301 GList *l;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
302 GList *select;
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
303 gpointer data = request_data[2];
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
304 GSList *ret = NULL;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
305 PurpleBuddy *bdy;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
306 PurpleRequestField *field;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
307
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
308 if (func == NULL) {
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
309 g_free(request_data);
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
310 return;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
311 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
312
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
313 field = purple_request_fields_get_field(fields, "buddy");
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
314 select = purple_request_field_list_get_selected(field);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
315
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
316 for (l = select; l != NULL; l = l->next) {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
317 bdy = purple_request_field_list_get_data(field, l->data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
318 ret = g_slist_prepend(ret, bdy);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
319 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
320
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
321 ret = g_slist_reverse(ret);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
322 func(ret, data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
323
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
324 g_slist_free(ret);
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
325 g_free(request_data);
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
326 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
327
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
328 static void
41969
86518b429f50 Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41084
diff changeset
329 fb_util_request_buddy_cancel(gpointer *request_data,
86518b429f50 Bump C standard to C99 for Facebook protocol and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41084
diff changeset
330 G_GNUC_UNUSED PurpleRequestFields *fields)
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
331 {
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
332 FbUtilRequestBuddyFunc func = request_data[1];
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
333 gpointer data = request_data[2];
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
334
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
335 if (func != NULL) {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
336 func(NULL, data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
337 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
338
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
339 g_free(request_data);
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
340 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
341
39336
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
342 static gint
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
343 fb_buddy_cmp(gconstpointer a, gconstpointer b)
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
344 {
39432
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
345 PurpleBuddy *pba, *pbb;
39337
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
346 gint alias_verdict, name_verdict;
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
347 gchar *astr, *bstr;
39336
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
348
39432
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
349 pba = PURPLE_BUDDY(a);
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
350 pbb = PURPLE_BUDDY(b);
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
351
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
352 astr = g_utf8_casefold(purple_buddy_get_alias(pba), -1);
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
353 bstr = g_utf8_casefold(purple_buddy_get_alias(pbb), -1);
39337
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
354 alias_verdict = g_utf8_collate(astr, bstr);
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
355 g_free(astr);
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
356 g_free(bstr);
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
357 if (alias_verdict != 0) {
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
358 return alias_verdict;
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
359 }
39432
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
360 astr = g_utf8_casefold(purple_buddy_get_name(pba), -1);
4c9808e30b3e Use G_DEFINE_TYPE_WITH_PRIVATE on PurpleBuddy.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39345
diff changeset
361 bstr = g_utf8_casefold(purple_buddy_get_name(pbb), -1);
39337
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
362 name_verdict = g_utf8_collate(astr, bstr);
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
363 g_free(astr);
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
364 g_free(bstr);
8b53f4ffdc1b Fix indentation into tabs, and make truthiness of gint explicit.
Shlomi Fish <shlomif@shlomifish.org>
parents: 39336
diff changeset
365 return name_verdict;
39336
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
366 }
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
367
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
368 gpointer
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
369 fb_util_request_buddy(PurpleConnection *gc, const gchar *title,
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
370 const gchar *primary, const gchar *secondary,
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
371 GSList *select, gboolean multi, GCallback ok_cb,
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
372 GCallback cancel_cb, gpointer data)
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
373 {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
374 const gchar *alias;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
375 const gchar *name;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
376 gchar *str;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
377 GList *items = NULL;
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
378 gpointer *request_data;
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
379 GSList *buddies;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
380 GSList *l;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
381 PurpleAccount *acct;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
382 PurpleRequestCommonParameters *cpar;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
383 PurpleRequestField *field;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
384 PurpleRequestFieldGroup *group;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
385 PurpleRequestFields *fields;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
386
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
387 request_data = g_new0(gpointer, 3);
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
388 request_data[0] = ok_cb;
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
389 request_data[1] = cancel_cb;
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
390 request_data[2] = data;
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
391
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
392 acct = purple_connection_get_account(gc);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
393 buddies = purple_blist_find_buddies(acct, NULL);
39336
f6f4427c055c Sort the facebook contacts by name/alias in group chat.
Shlomi Fish <shlomif@shlomifish.org>
parents: 37948
diff changeset
394 buddies = g_slist_sort(buddies, fb_buddy_cmp);
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
395
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
396 fields = purple_request_fields_new();
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
397 group = purple_request_field_group_new(NULL);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
398 purple_request_fields_add_group(fields, group);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
399
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
400 field = purple_request_field_list_new("buddy", NULL);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
401 purple_request_field_list_set_multi_select(field, multi);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
402 purple_request_field_set_required(field, TRUE);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
403 purple_request_field_group_add_field(group, field);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
404
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
405 for (l = buddies; l != NULL; l = l->next) {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
406 name = purple_buddy_get_name(l->data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
407 alias = purple_buddy_get_alias(l->data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
408 str = g_strdup_printf("%s (%s)", alias, name);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
409 purple_request_field_list_add_icon(field, str, NULL, l->data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
410 g_free(str);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
411 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
412
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
413 for (l = select; l != NULL; l = l->next) {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
414 name = purple_buddy_get_name(l->data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
415 alias = purple_buddy_get_alias(l->data);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
416 str = g_strdup_printf("%s (%s)", alias, name);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
417 items = g_list_append(items, str);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
418 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
419
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
420 purple_request_field_list_set_selected(field, items);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
421 g_slist_free(buddies);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
422 g_list_free_full(items, g_free);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
423
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
424 cpar = purple_request_cpar_from_connection(gc);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
425 return purple_request_fields(gc, title, primary, secondary, fields,
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
426 _("Ok"),
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
427 G_CALLBACK(fb_util_request_buddy_ok),
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
428 _("Cancel"),
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
429 G_CALLBACK(fb_util_request_buddy_cancel),
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
430 cpar, request_data);
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
431 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
432
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
433 void
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
434 fb_util_serv_got_im(PurpleConnection *gc, const gchar *who, const gchar *text,
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
435 PurpleMessageFlags flags, guint64 timestamp)
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
436 {
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
437 GDateTime *dt = NULL;
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
438 const gchar *name, *me;
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
439 PurpleAccount *acct;
41977
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
440 PurpleContactInfo *info = NULL;
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40765
diff changeset
441 PurpleConversation *conv;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
442 PurpleConversationManager *manager;
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
443 PurpleMessage *msg;
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
444
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
445 if (!(flags & PURPLE_MESSAGE_SEND)) {
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
446 purple_serv_got_im(gc, who, text, flags, timestamp);
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
447 return;
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
448 }
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
449
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
450 acct = purple_connection_get_account(gc);
41977
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
451 info = PURPLE_CONTACT_INFO(acct);
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
452 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
453
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
454 conv = purple_conversation_manager_find_im(manager, acct, who);
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
455
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
456 if (conv == NULL) {
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
457 conv = purple_im_conversation_new(acct, who);
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
458 }
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
459
41977
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
460 me = purple_contact_info_get_name_for_display(info);
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
461 name = purple_contact_info_get_username(info);
42048
8d4a5f33faa8 Add a PurpleAccount parameter to the PurpleMessage constructors
Gary Kramlich <grim@reaperworld.com>
parents: 41977
diff changeset
462 msg = purple_message_new_outgoing(acct, me, name, text, flags);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
463
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
464 dt = g_date_time_new_from_unix_local((gint64)timestamp);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
465 purple_message_set_timestamp(msg, dt);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
466 g_date_time_unref(dt);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
467
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40765
diff changeset
468 purple_conversation_write_message(conv, msg);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
469
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
470 g_object_unref(G_OBJECT(msg));
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
471 }
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
472
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
473 void
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
474 fb_util_serv_got_chat_in(PurpleConnection *gc, gint id, const gchar *who,
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
475 const gchar *text, PurpleMessageFlags flags,
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
476 guint64 timestamp)
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
477 {
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
478 GDateTime *dt = NULL;
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
479 const gchar *name;
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
480 PurpleAccount *acct;
41977
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
481 PurpleContactInfo *info = NULL;
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40765
diff changeset
482 PurpleConversation *conv;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
483 PurpleConversationManager *manager;
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
484 PurpleMessage *msg;
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
485 const gchar *me;
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
486
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
487 if (!(flags & PURPLE_MESSAGE_SEND)) {
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
488 purple_serv_got_chat_in(gc, id, who, flags, text, timestamp);
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
489 return;
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
490 }
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
491
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
492 acct = purple_connection_get_account(gc);
41977
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
493 info = PURPLE_CONTACT_INFO(acct);
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
494 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
495
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
496 conv = purple_conversation_manager_find_chat_by_id(manager, acct, id);
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
497
41977
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
498 me = purple_contact_info_get_name_for_display(info);
bade7303795a Update all protocol except gg and xmpp for the account api deprecations
Gary Kramlich <grim@reaperworld.com>
parents: 41969
diff changeset
499 name = purple_contact_info_get_username(info);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
500
42048
8d4a5f33faa8 Add a PurpleAccount parameter to the PurpleMessage constructors
Gary Kramlich <grim@reaperworld.com>
parents: 41977
diff changeset
501 msg = purple_message_new_outgoing(acct, me, name, text, flags);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
502
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
503 dt = g_date_time_new_from_unix_local((gint64)timestamp);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
504 purple_message_set_timestamp(msg, dt);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
505 g_date_time_unref(dt);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
506
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40765
diff changeset
507 purple_conversation_write_message(conv, msg);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
508
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
509 g_object_unref(G_OBJECT(msg));
37317
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
510 }
143a4d8db15c facebook: implemented self messages
James Geboski <jgeboski@gmail.com>
parents: 37310
diff changeset
511
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
512 gboolean
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
513 fb_util_strtest(const gchar *str, GAsciiType type)
37258
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
514 {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
515 gsize i;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
516 gsize size;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
517 guchar c;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
518
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
519 g_return_val_if_fail(str != NULL, FALSE);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
520 size = strlen(str);
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
521
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
522 for (i = 0; i < size; i++) {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
523 c = (guchar) str[i];
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
524
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
525 if ((g_ascii_table[c] & type) == 0) {
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
526 return FALSE;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
527 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
528 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
529
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
530 return TRUE;
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
531 }
291b6e1acc24 facebook: implemented group chat support
James Geboski <jgeboski@gmail.com>
parents: 37250
diff changeset
532
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
533 gboolean
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
534 fb_util_zlib_test(const GByteArray *bytes)
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
535 {
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
536 guint8 b0;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
537 guint8 b1;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
538
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
539 g_return_val_if_fail(bytes != NULL, FALSE);
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
540
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
541 if (bytes->len < 2) {
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
542 return FALSE;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
543 }
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
544
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
545 b0 = *(bytes->data + 0);
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
546 b1 = *(bytes->data + 1);
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
547
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
548 return ((((b0 << 8) | b1) % 31) == 0) && /* Check the header */
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
549 ((b0 & 0x0F) == 8 /* Z_DEFLATED */); /* Check the method */
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
550 }
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
551
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
552 static GByteArray *
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
553 fb_util_zlib_conv(GConverter *conv, const GByteArray *bytes, GError **error)
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
554 {
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
555 GByteArray *ret;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
556 GConverterResult res;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
557 gsize cize = 0;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
558 gsize rize;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
559 gsize wize;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
560 guint8 data[1024];
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
561
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
562 ret = g_byte_array_new();
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
563
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
564 while (TRUE) {
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
565 rize = 0;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
566 wize = 0;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
567
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
568 res = g_converter_convert(conv,
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
569 bytes->data + cize,
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
570 bytes->len - cize,
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
571 data, sizeof data,
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
572 G_CONVERTER_INPUT_AT_END,
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
573 &rize, &wize, error);
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
574
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
575 switch (res) {
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
576 case G_CONVERTER_CONVERTED:
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
577 g_byte_array_append(ret, data, wize);
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
578 cize += rize;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
579 break;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
580
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
581 case G_CONVERTER_ERROR:
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
582 g_byte_array_free(ret, TRUE);
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
583 return NULL;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
584
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
585 case G_CONVERTER_FINISHED:
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
586 g_byte_array_append(ret, data, wize);
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
587 return ret;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
588
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
589 default:
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
590 break;
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
591 }
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
592 }
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
593 }
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
594
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
595 GByteArray *
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
596 fb_util_zlib_deflate(const GByteArray *bytes, GError **error)
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
597 {
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
598 GByteArray *ret;
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
599 GZlibCompressor *conv;
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
600
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
601 conv = g_zlib_compressor_new(G_ZLIB_COMPRESSOR_FORMAT_ZLIB, -1);
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
602 ret = fb_util_zlib_conv(G_CONVERTER(conv), bytes, error);
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
603 g_object_unref(conv);
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
604 return ret;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
605 }
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
606
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
607 GByteArray *
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
608 fb_util_zlib_inflate(const GByteArray *bytes, GError **error)
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
609 {
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
610 GByteArray *ret;
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
611 GZlibDecompressor *conv;
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
612
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
613 conv = g_zlib_decompressor_new(G_ZLIB_COMPRESSOR_FORMAT_ZLIB);
37416
77536a48b4be facebook: refactored util naming and GTK-Doc
James Geboski <jgeboski@gmail.com>
parents: 37414
diff changeset
614 ret = fb_util_zlib_conv(G_CONVERTER(conv), bytes, error);
37414
252bb96afbe0 facebook: use the GConverter interface instead of zlib
James Geboski <jgeboski@gmail.com>
parents: 37341
diff changeset
615 g_object_unref(conv);
37250
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
616 return ret;
3f5570a17b15 facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff changeset
617 }

mercurial