libgaim/protocols/novell/nmuser.c

Sun, 19 Nov 2006 07:00:25 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Sun, 19 Nov 2006 07:00:25 +0000
changeset 15062
78e3c1c8c4f4
parent 14986
93c7969e2d78
child 20470
77693555855f
permissions
-rw-r--r--

[gaim-migrate @ 17779]
I'm committing this to get it out of my tree...

As mentioned on gaim-devel, this normalizes some stuff. Mark wants to standardize on "username" instead. For recognition purposes, I'd prefer that, but using "screen name" is potentially useful in that users might not enter their OS username. In any case, it's not a huge deal to me either way. I believe the consensus before was for "screen name", and barring a consensus to change, "screen name" is the status quo anyway, so I'm making things consistent.

8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * nmuser.c
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 *
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
4 * Copyright (c) 2004 Novell, Inc. All Rights Reserved.
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
5 *
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
6 * This program is free software; you can redistribute it and/or modify
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
7 * it under the terms of the GNU General Public License as published by
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
8 * the Free Software Foundation; version 2 of the License.
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 *
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
10 * This program is distributed in the hope that it will be useful,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
13 * GNU General Public License for more details.
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
14 *
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
15 * You should have received a copy of the GNU General Public License
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
16 * along with this program; if not, write to the Free Software
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 #include <glib.h>
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 #include <string.h>
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
23 #include "internal.h"
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
24 #include "nmfield.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 #include "nmuser.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26 #include "nmconn.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
27 #include "nmcontact.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
28 #include "nmuserrecord.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29 #include "util.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
30
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
31 /* This is the template that we wrap outgoing messages in, since the other
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
32 * GW Messenger clients expect messages to be in RTF.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
33 */
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
34 #define RTF_TEMPLATE "{\\rtf1\\ansi\n"\
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
35 "{\\fonttbl{\\f0\\fnil Unknown;}}\n"\
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
36 "{\\colortbl ;\\red0\\green0\\blue0;}\n"\
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
37 "\\uc1\\cf1\\f0\\fs24 %s\\par\n}"
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
38 #define NM_MAX_MESSAGE_SIZE 2048
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
40 static NMERR_T nm_process_response(NMUser * user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
41 static void _update_contact_list(NMUser * user, NMField * fields);
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
42 static void _handle_multiple_get_details_login_cb(NMUser * user, NMERR_T ret_code,
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
43 gpointer resp_data, gpointer user_data);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
44 static char * nm_rtfize_text(char *text);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
45
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46 /**
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
47 * See header for comments on on "public" functions
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
48 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
49
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
50 NMUser *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51 nm_initialize_user(const char *name, const char *server_addr,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
52 int port, gpointer data, nm_event_cb event_callback)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 {
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8744
diff changeset
54 NMUser *user;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55 if (name == NULL || server_addr == NULL || event_callback == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
56 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8744
diff changeset
58 user = g_new0(NMUser, 1);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
59
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
60
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62 user->contacts =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63 g_hash_table_new_full(g_str_hash, nm_utf8_str_equal,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 g_free, (GDestroyNotify) nm_release_contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66 user->user_records =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 g_hash_table_new_full(g_str_hash, nm_utf8_str_equal, g_free,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68 (GDestroyNotify) nm_release_user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
70 user->display_id_to_dn = g_hash_table_new_full(g_str_hash, nm_utf8_str_equal,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
71 g_free, g_free);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
72
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 user->name = g_strdup(name);
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
74 user->conn = nm_create_conn(server_addr, port);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 user->conn->addr = g_strdup(server_addr);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
76 user->conn->port = port;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
77 user->evt_callback = event_callback;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
78 user->client_data = data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
80 return user;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
82
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 nm_deinitialize_user(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 {
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
87 nm_release_conn(user->conn);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
89 if (user->contacts) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 g_hash_table_destroy(user->contacts);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93 if (user->user_records) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
94 g_hash_table_destroy(user->user_records);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97 if (user->display_id_to_dn) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 g_hash_table_destroy(user->display_id_to_dn);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
99 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 if (user->name) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102 g_free(user->name);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
103 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
105 if (user->user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 nm_release_user_record(user->user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
108
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
109 nm_conference_list_free(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
110 nm_destroy_contact_list(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
111
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 g_free(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
114
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
115 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
116 nm_send_login(NMUser * user, const char *pwd, const char *my_addr,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117 const char *user_agent, nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
118 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
119 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
120 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
121
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122 if (user == NULL || pwd == NULL || user_agent == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
125
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
126 fields = nm_field_add_pointer(fields, NM_A_SZ_USERID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
127 g_strdup(user->name), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
128
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
129 fields = nm_field_add_pointer(fields, NM_A_SZ_CREDENTIALS, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
130 g_strdup(pwd), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
131
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
132 fields = nm_field_add_pointer(fields, NM_A_SZ_USER_AGENT, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
133 g_strdup(user_agent), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
134
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
135 fields = nm_field_add_number(fields, NM_A_UD_BUILD, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
136 NM_PROTOCOL_VERSION, NMFIELD_TYPE_UDWORD);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 if (my_addr) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
138 fields = nm_field_add_pointer(fields, NM_A_IP_ADDRESS, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
139 g_strdup(my_addr), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142 /* Send the login */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
143 rc = nm_send_request(user->conn, "login", fields, callback, data, NULL);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
145 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
147 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
148
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
150 nm_send_set_status(NMUser * user, int status, const char *text,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
151 const char *auto_resp, nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
152 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
153 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
154 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
155
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
156 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
157 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
158
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
159 /* Add the status */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
160 fields = nm_field_add_pointer(fields, NM_A_SZ_STATUS, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
161 g_strdup_printf("%d", status), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
162
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
163 /* Add the status text and auto reply text if there is any */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
164 if (text) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
165 fields = nm_field_add_pointer(fields, NM_A_SZ_STATUS_TEXT, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
166 NMFIELD_METHOD_VALID, 0, g_strdup(text),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
167 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
168 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
170 if (auto_resp) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
171 fields = nm_field_add_pointer(fields, NM_A_SZ_MESSAGE_BODY, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
172 NMFIELD_METHOD_VALID, 0, g_strdup(auto_resp),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
173 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
174 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
175
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
176 rc = nm_send_request(user->conn, "setstatus", fields, callback, data, NULL);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
177
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
178 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
179 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
180 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
181
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
182 NMERR_T
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
183 nm_send_multiple_get_details(NMUser * user, GSList *names,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
184 nm_response_cb callback, gpointer data)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
185 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
186 NMERR_T rc = NM_OK;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
187 NMField *fields = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
188 GSList *node;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
189
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
190 if (user == NULL || names == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
191 return NMERR_BAD_PARM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
192
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
193 /* Add in DN or display id */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
194 for (node = names; node; node = node->next) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
195 fields = nm_field_add_pointer(fields, NM_A_SZ_USERID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
196 g_strdup(node->data), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
197 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
198
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
199 rc = nm_send_request(user->conn, "getdetails", fields, callback, data, NULL);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
200
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
201 nm_free_fields(&fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
202 return rc;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
203 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
204
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
205 NMERR_T
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
206 nm_send_get_details(NMUser * user, const char *name,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
208 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
209 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
210 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
211
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
212 if (user == NULL || name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
213 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
214
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
215 /* Add in DN or display id */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
216 if (strstr("=", name)) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
217 fields = nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
218 g_strdup(name), NMFIELD_TYPE_DN);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221 const char *dn = nm_lookup_dn(user, name);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
222 if (dn) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
223 fields = nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
224 g_strdup(name), NMFIELD_TYPE_DN);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
227 nm_field_add_pointer(fields, NM_A_SZ_USERID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
228 g_strdup(name), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
229 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
230
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
232
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
233 rc = nm_send_request(user->conn, "getdetails", fields, callback, data, NULL);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
234
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
235 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
236 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
238
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
239 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
240 nm_send_create_conference(NMUser * user, NMConference * conference,
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
241 nm_response_cb callback, gpointer data)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
242 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
243 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
244 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
245 NMField *tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
246 NMField *field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
247 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
248 int count, i;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
249
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
250 if (user == NULL || conference == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
252
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
253 /* Add in a blank guid */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
254 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
255 g_strdup(BLANK_GUID), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
256
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
257 fields = nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
258 NMFIELD_METHOD_VALID, 0, tmp,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
259 NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
260 tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
262
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
263 /* Add participants in */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
264 count = nm_conference_get_participant_count(conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
265 for (i = 0; i < count; i++) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
266 NMUserRecord *user_record = nm_conference_get_participant(conference, i);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
267
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268 if (user_record) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
269 fields = nm_field_add_pointer(fields, NM_A_SZ_DN,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
270 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
271 g_strdup(nm_user_record_get_dn(user_record)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
272 NMFIELD_TYPE_DN);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
273 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
274 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
275
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
276 /* Add our user in */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
277 field = nm_locate_field(NM_A_SZ_DN, user->fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
278 if (field) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
279 fields = nm_field_add_pointer(fields, NM_A_SZ_DN,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
280 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
281 g_strdup((char *) field->ptr_value),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
282 NMFIELD_TYPE_DN);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
284
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
285 rc = nm_send_request(user->conn, "createconf", fields, callback, data, &req);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
286 if (rc == NM_OK && req) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
287 nm_conference_add_ref(conference);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 nm_request_set_data(req, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
289 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
290
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
291 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
292 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
293
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
294 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
295 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
297
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
298 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299 nm_send_leave_conference(NMUser * user, NMConference * conference,
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
300 nm_response_cb callback, gpointer data)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
302 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
303 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
304 NMField *tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
305 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
306
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
307 if (user == NULL || conference == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
308 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
309
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
310 /* Add in the conference guid */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
311 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
312 g_strdup(nm_conference_get_guid(conference)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
313 NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
314
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
315 fields = nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
316 NMFIELD_METHOD_VALID, 0, tmp,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
317 NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
318 tmp = NULL;
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
319
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
320 /* Send the request to the server */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
321 rc = nm_send_request(user->conn, "leaveconf", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
322 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
323 nm_request_set_data(req, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
324
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
325 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
327
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
328 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
329 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
330 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
331
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
332 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
333 nm_send_join_conference(NMUser * user, NMConference * conference,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
334 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
336 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
337 NMField *fields = NULL, *tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
338 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
339
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
340 if (user == NULL || conference == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
341 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
342
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
343 /* Add in the conference guid */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
344 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
345 g_strdup(nm_conference_get_guid(conference)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
346 NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
347
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
348 fields = nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
349 NMFIELD_METHOD_VALID, 0, tmp,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
350 NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
351 tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
352
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
353 /* Send the request to the server */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
354 rc = nm_send_request(user->conn, "joinconf", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
355 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
356 nm_request_set_data(req, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
357
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
358 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
359 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
360
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
361 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
362 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
363 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
364
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
365 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
366 nm_send_reject_conference(NMUser * user, NMConference * conference,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
367 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
368 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
369 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
370 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
371 NMField *tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
372 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
373
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
374 if (user == NULL || conference == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
375 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
376
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
377 /* Add in the conference guid */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
378 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
379 g_strdup(nm_conference_get_guid(conference)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
380 NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
381
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
382 fields = nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
383 NMFIELD_METHOD_VALID, 0, tmp,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
384 NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
385 tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
386
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
387 /* Send the request to the server */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
388 rc = nm_send_request(user->conn, "rejectconf", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
389 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
390 nm_request_set_data(req, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
391
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
392 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
393 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
394
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
395 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
396 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
397 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
398
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
399 NMERR_T
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
400 nm_send_conference_invite(NMUser *user, NMConference *conference, NMUserRecord *user_record,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
401 const char *message, nm_response_cb callback, gpointer data)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
402 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
403 NMERR_T rc = NM_OK;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
404 NMField *fields = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
405 NMField *tmp = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
406 NMRequest *req = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
407
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
408 if (user == NULL || conference == NULL || user_record == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
409 return NMERR_BAD_PARM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
410
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
411 /* Add in the conference guid */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
412 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
413 g_strdup(nm_conference_get_guid(conference)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
414 NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
415
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
416 fields = nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
417 NMFIELD_METHOD_VALID, 0, tmp,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
418 NMFIELD_TYPE_ARRAY);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
419 tmp = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
420
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
421 /* Add in DN of user to invite */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
422 fields = nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
423 g_strdup(nm_user_record_get_dn(user_record)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
424 NMFIELD_TYPE_DN);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
425
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
426 /* Add the invite message if there is one */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
427 if (message)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
428 fields = nm_field_add_pointer(fields, NM_A_SZ_MESSAGE_BODY, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
429 g_strdup(message), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
430
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
431 /* Send the request to the server */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
432 rc = nm_send_request(user->conn, "sendinvite", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
433 if (rc == NM_OK && req)
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
434 nm_request_set_data(req, conference);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
435
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
436 if (req)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
437 nm_release_request(req);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
438
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
439 nm_free_fields(&fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
440 return rc;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
441 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
442
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
443 NMERR_T
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
444 nm_send_message(NMUser * user, NMMessage * message, nm_response_cb callback)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
445 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
446 NMERR_T rc = NM_OK;
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
447 char *text, *rtfized;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
448 NMField *fields = NULL, *tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
449 NMConference *conf;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
450 NMUserRecord *user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
451 int count, i;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
452
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
453 if (user == NULL || message == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
454 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
455 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
456
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
457 conf = nm_message_get_conference(message);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
458 if (!nm_conference_is_instantiated(conf)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
459 rc = NMERR_CONFERENCE_NOT_INSTANTIATED;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
460 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
461
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
462 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
463 g_strdup(nm_conference_get_guid(conf)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
464 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
465
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
466 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
467 nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
468 tmp, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
469 tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
470
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
471 /* Add RTF and plain text versions of the message */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
472 text = g_strdup(nm_message_get_text(message));
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
473
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
474 /* Truncate if necessary */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
475 if (strlen(text) > NM_MAX_MESSAGE_SIZE)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
476 text[NM_MAX_MESSAGE_SIZE] = 0;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
477
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
478 rtfized = nm_rtfize_text(text);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
479
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
480 gaim_debug_info("novell", "message text is: %s\n", text);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
481 gaim_debug_info("novell", "message rtf is: %s\n", rtfized);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
482
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
483 tmp = nm_field_add_pointer(tmp, NM_A_SZ_MESSAGE_BODY, 0, NMFIELD_METHOD_VALID, 0,
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
484 rtfized, NMFIELD_TYPE_UTF8);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
485
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
486 tmp = nm_field_add_number(tmp, NM_A_UD_MESSAGE_TYPE, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
487 0, NMFIELD_TYPE_UDWORD);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
488
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
489 tmp = nm_field_add_pointer(tmp, NM_A_SZ_MESSAGE_TEXT, 0, NMFIELD_METHOD_VALID, 0,
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
490 text, NMFIELD_TYPE_UTF8);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
491
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
492 fields = nm_field_add_pointer(fields, NM_A_FA_MESSAGE, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
493 tmp, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
494 tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
495
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
496 /* Add participants */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
497 count = nm_conference_get_participant_count(conf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
498 for (i = 0; i < count; i++) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
499 user_record = nm_conference_get_participant(conf, i);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
500 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
501 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
502 nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
503 g_strdup(nm_user_record_get_dn(user_record)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
504 NMFIELD_TYPE_DN);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
505 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
506 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
507
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
508 /* Send the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
509 rc = nm_send_request(user->conn, "sendmessage", fields, callback, NULL, NULL);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
510 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
511
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
512 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
513 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
514 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
515
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
516 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
517 nm_send_typing(NMUser * user, NMConference * conf,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
518 gboolean typing, nm_response_cb callback)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
519 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
520 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
521 char *str = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
522 NMField *fields = NULL, *tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
523
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
524 if (user == NULL || conf == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
525 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
526 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
527
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
528 if (!nm_conference_is_instantiated(conf)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
529 rc = NMERR_CONFERENCE_NOT_INSTANTIATED;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
530 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
531 /* Add the conference GUID */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
532 tmp = nm_field_add_pointer(tmp, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
533 g_strdup(nm_conference_get_guid(conf)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
534 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
535
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
536 /* Add typing type */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
537 str = g_strdup_printf("%d",
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
538 (typing ? NMEVT_USER_TYPING :
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
539 NMEVT_USER_NOT_TYPING));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
540
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
541 tmp = nm_field_add_pointer(tmp, NM_A_SZ_TYPE, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
542 str, NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
543
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
544 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
545 nm_field_add_pointer(fields, NM_A_FA_CONVERSATION, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
546 tmp, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
547 tmp = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
548
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
549 rc = nm_send_request(user->conn, "sendtyping", fields, callback, NULL, NULL);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
550 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
551
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
552 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
553 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
554 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
555
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
556 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
557 nm_send_create_contact(NMUser * user, NMFolder * folder,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
558 NMContact * contact, nm_response_cb callback,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
559 gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
560 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
561 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
562 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
563 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
564 const char *name = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
565 const char *display_name = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
566
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
567 if (user == NULL || folder == NULL || contact == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
568 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
569 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
570
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
571 /* Add parent ID */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
572 fields = nm_field_add_pointer(fields, NM_A_SZ_PARENT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
573 g_strdup_printf("%d", nm_folder_get_id(folder)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
574 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
575
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
576 /* Check to see if userid is current user and return an error? */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
577
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
578 /* Check to see if contact already exists and return an error? */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
579
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
580 /* Add userid or dn */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
581 name = nm_contact_get_dn(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
582 if (name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
583 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
584
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
585 if (strstr("=", name)) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
586 fields = nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
587 g_strdup(name), NMFIELD_TYPE_DN);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
588 } else {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
589 fields = nm_field_add_pointer(fields, NM_A_SZ_USERID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
590 g_strdup(name), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
591 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
592
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
593 /* Add display name */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
594 display_name = nm_contact_get_display_name(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
595 if (display_name)
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
596 fields = nm_field_add_pointer(fields, NM_A_SZ_DISPLAY_NAME, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
597 g_strdup(display_name), NMFIELD_TYPE_UTF8);
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
598
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
599 /* Dispatch the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
600 rc = nm_send_request(user->conn, "createcontact", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
601 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
602 nm_request_set_data(req, contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
603
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
604 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
605 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
606
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
607 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
608 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
609 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
610
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
611 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
612 nm_send_remove_contact(NMUser * user, NMFolder * folder,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
613 NMContact * contact, nm_response_cb callback,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
614 gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
615 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
616 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
617 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
618 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
619
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
620 if (user == NULL || folder == NULL || contact == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
621 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
622 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
623
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
624 /* Add parent id */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
625 fields = nm_field_add_pointer(fields, NM_A_SZ_PARENT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
626 g_strdup_printf("%d", nm_folder_get_id(folder)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
627 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
628
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
629 /* Add object id */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
630 fields = nm_field_add_pointer(fields, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
631 g_strdup_printf("%d", nm_contact_get_id(contact)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
632 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
633
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
634 /* Dispatch the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
635 rc = nm_send_request(user->conn, "deletecontact", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
636 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
637 nm_request_set_data(req, contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
638
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
639 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
640 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
641
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
642 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
643 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
644 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
645
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
646 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
647 nm_send_create_folder(NMUser * user, const char *name,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
648 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
649 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
650 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
651 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
652 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
653
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
654 if (user == NULL || name == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
655 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
656 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
657
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
658 /* Add parent ID */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
659 fields = nm_field_add_pointer(fields, NM_A_SZ_PARENT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
660 g_strdup("0"), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
661
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
662 /* Add name of the folder to add */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
663 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
664 nm_field_add_pointer(fields, NM_A_SZ_DISPLAY_NAME, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
665 g_strdup(name), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
666
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
667 /* Add sequence, for now just put it at the bottom */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
668 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
669 nm_field_add_pointer(fields, NM_A_SZ_SEQUENCE_NUMBER, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
670 g_strdup("-1"), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
671
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
672 /* Dispatch the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
673 rc = nm_send_request(user->conn, "createfolder", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
674 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
675 nm_request_set_data(req, g_strdup(name));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
676
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
677 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
678 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
679
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
680 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
681 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
682 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
683
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
684 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
685 nm_send_remove_folder(NMUser * user, NMFolder * folder,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
686 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
687 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
688 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
689 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
690 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
691
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
692 if (user == NULL || folder == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
693 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
694 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
695
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
696 /* Add the object id */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
697 fields = nm_field_add_pointer(fields, NM_A_SZ_OBJECT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
698 g_strdup_printf("%d", nm_folder_get_id(folder)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
699 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
700
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
701 /* Dispatch the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
702 rc = nm_send_request(user->conn, "deletecontact", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
703 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
704 nm_request_set_data(req, folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
705
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
706 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
707 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
708
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
709 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
710 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
711 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
712
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
713 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
714 nm_send_get_status(NMUser * user, NMUserRecord * user_record,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
715 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
716 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
717 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
718 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
719 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
720 const char *dn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
721
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
722 if (user == NULL || user_record == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
723 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
724
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
725 /* Add DN to field list */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
726 dn = nm_user_record_get_dn(user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
727 if (dn == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
728 return (NMERR_T) -1;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
729
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
730 fields = nm_field_add_pointer(fields, NM_A_SZ_DN, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
731 g_strdup(dn), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
732
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
733 /* Dispatch the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
734 rc = nm_send_request(user->conn, "getstatus", fields, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
735 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
736 nm_request_set_data(req, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
737
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
738 if (req)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
739 nm_release_request(req);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
740
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
741 nm_free_fields(&fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
742 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
743 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
744
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
745 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
746 nm_send_rename_contact(NMUser * user, NMContact * contact,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
747 const char *new_name, nm_response_cb callback,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
748 gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
749 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
750 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
751 NMField *field = NULL, *fields = NULL, *list = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
752 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
753
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
754 if (user == NULL || contact == NULL || new_name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
755 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
756
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
757 /* Create field list for current contact */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
758 field = nm_contact_to_fields(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
759 if (field) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
760
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
761 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
762 nm_field_add_pointer(fields, NM_A_FA_CONTACT, 0, NMFIELD_METHOD_DELETE, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
763 field, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
764 field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
765
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
766 /* Update the contacts display name locally */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
767 nm_contact_set_display_name(contact, new_name);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
768
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
769 /* Create field list for updated contact */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
770 field = nm_contact_to_fields(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
771 if (field) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
772 fields =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
773 nm_field_add_pointer(fields, NM_A_FA_CONTACT, 0, NMFIELD_METHOD_ADD, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
774 field, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
775 field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
776
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
777 /* Package it up */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
778 list =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
779 nm_field_add_pointer(list, NM_A_FA_CONTACT_LIST, 0, NMFIELD_METHOD_VALID,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
780 0, fields, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
781 fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
782
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
783 rc = nm_send_request(user->conn, "updateitem", list, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
784 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
785 nm_request_set_data(req, contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
786 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
787 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
788
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
789 if (req)
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
790 nm_release_request(req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
791
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
792 if (list)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
793 nm_free_fields(&list);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
794
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
795 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
796 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
797
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
798 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
799 nm_send_rename_folder(NMUser * user, NMFolder * folder, const char *new_name,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
800 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
801 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
802 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
803 NMField *field = NULL, *fields = NULL, *list = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
804 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
805
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
806 if (user == NULL || folder == NULL || new_name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
807 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
808
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
809 /* Make sure folder does not already exist!? */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
810 if (nm_find_folder(user, new_name))
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
811 return NMERR_FOLDER_EXISTS;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
812
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
813 /* Create field list for current folder */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
814 field = nm_folder_to_fields(folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
815 if (field) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
816
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
817 fields = nm_field_add_pointer(fields, NM_A_FA_FOLDER, 0, NMFIELD_METHOD_DELETE, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
818 field, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
819 field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
820
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
821 /* Update the folders display name locally */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
822 nm_folder_set_name(folder, new_name);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
823
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
824 /* Create field list for updated folder */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
825 field = nm_folder_to_fields(folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
826 if (field) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
827 fields = nm_field_add_pointer(fields, NM_A_FA_FOLDER, 0, NMFIELD_METHOD_ADD, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
828 field, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
829 field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
830
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
831 /* Package it up */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
832 list = nm_field_add_pointer(list, NM_A_FA_CONTACT_LIST, 0, NMFIELD_METHOD_VALID,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
833 0, fields, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
834 fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
835
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
836 rc = nm_send_request(user->conn, "updateitem", list, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
837 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
838 nm_request_set_data(req, folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
839 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
840 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
841
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
842 if (req)
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
843 nm_release_request(req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
844
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
845 if (list)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
846 nm_free_fields(&list);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
847
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
848 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
849 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
850
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
851 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
852 nm_send_move_contact(NMUser * user, NMContact * contact, NMFolder * folder,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
853 nm_response_cb callback, gpointer data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
854 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
855 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
856 NMField *field = NULL, *fields = NULL, *list = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
857 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
858
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
859 if (user == NULL || contact == NULL || folder == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
860 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
861
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
862 /* Create field list for the contact */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
863 field = nm_contact_to_fields(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
864 if (field) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
865
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
866 fields = nm_field_add_pointer(fields, NM_A_FA_CONTACT, 0, NMFIELD_METHOD_DELETE, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
867 field, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
868 field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
869
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
870 /* Wrap the contact up and add it to the request field list */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
871 list = nm_field_add_pointer(list, NM_A_FA_CONTACT_LIST, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
872 fields, NMFIELD_TYPE_ARRAY);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
873 fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
874
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
875 /* Add sequence number */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
876 list = nm_field_add_pointer(list, NM_A_SZ_SEQUENCE_NUMBER, 0, NMFIELD_METHOD_VALID,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
877 0, g_strdup("-1"), NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
878
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
879 /* Add parent ID */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
880 list = nm_field_add_pointer(list, NM_A_SZ_PARENT_ID, 0, NMFIELD_METHOD_VALID, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
881 g_strdup_printf("%d", nm_folder_get_id(folder)),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
882 NMFIELD_TYPE_UTF8);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
883
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
884 /* Dispatch the request */
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
885 rc = nm_send_request(user->conn, "movecontact", list, callback, data, &req);
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
886 if (rc == NM_OK && req)
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
887 nm_request_set_data(req, contact);
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
888
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
889 }
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
890
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
891 if (req)
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
892 nm_release_request(req);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
893
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
894 if (list)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
895 nm_free_fields(&list);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
896
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
897 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
898 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
899
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
900
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
901 NMERR_T
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
902 nm_send_create_privacy_item(NMUser *user, const char *who, gboolean allow_list,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
903 nm_response_cb callback, gpointer data)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
904 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
905 NMERR_T rc = NM_OK;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
906 NMField *fields = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
907 const char *tag;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
908
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
909 if (user == NULL || who == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
910 return NMERR_BAD_PARM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
911
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
912 if (allow_list)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
913 tag = NM_A_SZ_BLOCKING_ALLOW_ITEM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
914 else
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
915 tag = NM_A_SZ_BLOCKING_DENY_ITEM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
916
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
917 fields = nm_field_add_pointer(fields, tag, 0, NMFIELD_METHOD_ADD, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
918 g_strdup(who), NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
919
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
920 rc = nm_send_request(user->conn, "createblock", fields, callback, data, NULL);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
921
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
922 nm_free_fields(&fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
923 return rc;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
924 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
925
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
926 NMERR_T
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
927 nm_send_remove_privacy_item(NMUser *user, const char *dn, gboolean allow_list,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
928 nm_response_cb callback, gpointer data)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
929 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
930 NMERR_T rc = NM_OK;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
931 NMField *fields = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
932 const char *tag;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
933 GSList **list_ptr, *node;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
934
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
935 if (user == NULL || dn == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
936 return NMERR_BAD_PARM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
937
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
938 if (allow_list) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
939 tag = NM_A_BLOCKING_ALLOW_LIST;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
940 list_ptr = &user->allow_list;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
941 } else {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
942 tag = NM_A_BLOCKING_DENY_LIST;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
943 list_ptr = &user->deny_list;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
944 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
945
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
946 /* Remove item from the cached list */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
947 if ((node = g_slist_find_custom(*list_ptr, dn, (GCompareFunc)nm_utf8_strcasecmp))) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
948 *list_ptr = g_slist_remove_link(*list_ptr, node);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
949 g_slist_free_1(node);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
950 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
951
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
952 fields = nm_field_add_pointer(fields, tag, 0, NMFIELD_METHOD_DELETE, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
953 g_strdup(dn), NMFIELD_TYPE_DN);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
954
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
955 rc = nm_send_request(user->conn, "updateblocks", fields, callback, data, NULL);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
956
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
957 nm_free_fields(&fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
958 return rc;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
959
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
960 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
961
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
962 NMERR_T
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
963 nm_send_set_privacy_default(NMUser *user, gboolean default_deny,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
964 nm_response_cb callback, gpointer data)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
965 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
966 NMERR_T rc = NM_OK;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
967 NMField *fields = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
968
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
969 if (user == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
970 return NMERR_BAD_PARM;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
971
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
972 fields = nm_field_add_pointer(fields, NM_A_BLOCKING, 0, NMFIELD_METHOD_UPDATE, 0,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
973 (default_deny ? g_strdup("1") : g_strdup("0")),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
974 NMFIELD_TYPE_UTF8);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
975
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
976 rc = nm_send_request(user->conn, "updateblocks", fields, callback, data, NULL);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
977
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
978 nm_free_fields(&fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
979 return rc;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
980 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
981
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
982 NMERR_T
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
983 nm_send_keepalive(NMUser *user, nm_response_cb callback, gpointer data)
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
984 {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
985 NMERR_T rc = NM_OK;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
986
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
987 if (user == NULL)
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
988 return NMERR_BAD_PARM;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
989
9360
c40bc951573a [gaim-migrate @ 10168]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
990 rc = nm_send_request(user->conn, "ping", NULL, callback, data, NULL);
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
991
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
992 return rc;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
993 }
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
994
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
995 NMERR_T
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
996 nm_process_new_data(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
997 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
998 NMConn *conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
999 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1000 guint32 val;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1001
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1002 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1003 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1004
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1005 conn = user->conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1006
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1007 /* Check to see if this is an event or a response */
14656
b570e4d43082 [gaim-migrate @ 17319]
Mike Stoddard <mistoddard@novell.com>
parents: 14254
diff changeset
1008 rc = nm_read_all(conn, (char *) &val, sizeof(val));
b570e4d43082 [gaim-migrate @ 17319]
Mike Stoddard <mistoddard@novell.com>
parents: 14254
diff changeset
1009 if (rc == NM_OK) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1010 if (strncmp((char *) &val, "HTTP", strlen("HTTP")) == 0)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1011 rc = nm_process_response(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1012 else
8874
6dda85680808 [gaim-migrate @ 9643]
Mike Stoddard <mistoddard@novell.com>
parents: 8782
diff changeset
1013 rc = nm_process_event(user, GUINT32_FROM_LE(val));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1014
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1015 } else {
14656
b570e4d43082 [gaim-migrate @ 17319]
Mike Stoddard <mistoddard@novell.com>
parents: 14254
diff changeset
1016 if (errno == EAGAIN)
b570e4d43082 [gaim-migrate @ 17319]
Mike Stoddard <mistoddard@novell.com>
parents: 14254
diff changeset
1017 rc = NM_OK;
b570e4d43082 [gaim-migrate @ 17319]
Mike Stoddard <mistoddard@novell.com>
parents: 14254
diff changeset
1018 else
b570e4d43082 [gaim-migrate @ 17319]
Mike Stoddard <mistoddard@novell.com>
parents: 14254
diff changeset
1019 rc = NMERR_PROTOCOL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1020 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1021
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1022 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1023 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1024
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1025 NMConference *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1026 nm_find_conversation(NMUser * user, const char *who)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1027 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1028 NMConference *conference = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1029 NMConference *tmp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1030 GSList *cnode;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1031
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1032 if (user && user->conferences) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1033 for (cnode = user->conferences; cnode; cnode = cnode->next) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1034 tmp = cnode->data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1035 if (nm_conference_get_participant_count(tmp) == 1) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1036 NMUserRecord *ur = nm_conference_get_participant(tmp, 0);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1037
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1038 if (ur) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1039 if (nm_utf8_str_equal(nm_user_record_get_dn(ur), who)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1040 conference = tmp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1041 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1042 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1043 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1044 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1045 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1046 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1047
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1048 return conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1049 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1050
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1051 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1052 nm_conference_list_add(NMUser * user, NMConference * conf)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1053 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1054 if (user == NULL || conf == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1055 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1056
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1057 nm_conference_add_ref(conf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1058 user->conferences = g_slist_append(user->conferences, conf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1059 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1060
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1061 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1062 nm_conference_list_remove(NMUser * user, NMConference * conf)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1063 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1064 if (user == NULL || conf == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1065 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1066
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1067 if (g_slist_find(user->conferences, conf)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1068 user->conferences = g_slist_remove(user->conferences, conf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1069 nm_release_conference(conf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1070 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1071 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1072
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1073 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1074 nm_conference_list_free(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1075 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1076 GSList *cnode;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1077 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1078
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1079 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1080 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1081
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1082 if (user->conferences) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1083 for (cnode = user->conferences; cnode; cnode = cnode->next) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1084 conference = cnode->data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1085 cnode->data = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1086 nm_release_conference(conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1087 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1088
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1089 g_slist_free(user->conferences);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1090 user->conferences = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1091 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1092 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1093
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1094 NMConference *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1095 nm_conference_list_find(NMUser * user, const char *guid)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1096 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1097 GSList *cnode;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1098 NMConference *conference = NULL, *tmp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1099
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1100 if (user == NULL || guid == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1101 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1102
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1103 if (user->conferences) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1104 for (cnode = user->conferences; cnode; cnode = cnode->next) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1105 tmp = cnode->data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1106 if (nm_are_guids_equal(nm_conference_get_guid(tmp), guid)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1107 conference = tmp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1108 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1109 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1110 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1111 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1112
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1113 return conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1114 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1115
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1116 gboolean
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1117 nm_are_guids_equal(const char *guid1, const char *guid2)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1118 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1119 if (guid1 == NULL || guid2 == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1120 return FALSE;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1121
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1122 return (strncmp(guid1, guid2, CONF_GUID_END) == 0);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1123 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1124
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1125 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1126 nm_user_add_contact(NMUser * user, NMContact * contact)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1127 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1128 if (user == NULL || contact == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1129 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1130
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1131 nm_contact_add_ref(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1132
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1133 g_hash_table_insert(user->contacts,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1134 g_utf8_strdown(nm_contact_get_dn(contact), -1), contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1135 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1136
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1137 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1138 nm_user_add_user_record(NMUser * user, NMUserRecord * user_record)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1139 {
14721
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1140 const char *display_id;
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1141 const char *dn;
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1142
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1143 if (!user || !user_record)
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1144 return;
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1145
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1146 display_id = nm_user_record_get_display_id(user_record);
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1147 dn = nm_user_record_get_dn(user_record);
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1148
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1149 if (!dn || !display_id)
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1150 return;
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1151
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1152 nm_user_record_add_ref(user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1153
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1154 g_hash_table_insert(user->user_records,
14721
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1155 g_utf8_strdown(dn, -1),
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1156 user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1157
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1158 g_hash_table_insert(user->display_id_to_dn,
14721
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1159 g_utf8_strdown(display_id, -1),
76871a6afba7 [gaim-migrate @ 17405]
Mike Stoddard <mistoddard@novell.com>
parents: 14656
diff changeset
1160 g_utf8_strdown(dn, -1));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1161 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1162
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1163 nm_event_cb
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1164 nm_user_get_event_callback(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1165 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1166 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1167 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1168
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1169 return user->evt_callback;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1170 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1171
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1172 NMConn *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1173 nm_user_get_conn(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1174 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1175 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1176 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1177
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1178 return user->conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1179 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1180
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1181 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1182 nm_create_contact_list(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1183 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1184 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1185 NMField *locate = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1186
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1187 if (user == NULL || user->fields == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1188 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1189 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1190
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1191 /* Create the root folder */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1192 user->root_folder = nm_create_folder("");
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1193
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1194 /* Find the contact list in the login fields */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1195 locate = nm_locate_field(NM_A_FA_CONTACT_LIST, user->fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1196 if (locate != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1197
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1198 /* Add the folders and then the contacts */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1199 nm_folder_add_contacts_and_folders(user, user->root_folder,
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1200 (NMField *) (locate->ptr_value));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1201
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1202 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1203
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1204 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1205 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1206
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1207 gboolean nm_user_is_privacy_locked(NMUser *user)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1208 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1209 if (user) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1210 return user->privacy_locked;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1211 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1212
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1213 return FALSE;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1214 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1215
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1216 static gboolean
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1217 _create_privacy_list(NMUser * user, NMRequest *request)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1218 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1219 NMField *locate = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1220 GSList *need_details = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1221
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1222 /* Are the privacy settings locked */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1223 locate = nm_locate_field(NM_A_LOCKED_ATTR_LIST, user->fields);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1224 if (locate && locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1225 if (locate->type == NMFIELD_TYPE_UTF8 &&
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1226 (nm_utf8_strcasecmp(locate->ptr_value, NM_A_BLOCKING) == 0)) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1227 user->privacy_locked = TRUE;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1228 } else if (locate->type == NMFIELD_TYPE_MV ||
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1229 locate->type == NMFIELD_TYPE_ARRAY) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1230 NMField *tmp = (NMField *)locate->ptr_value;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1231 while (tmp && tmp->tag) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1232 if (nm_utf8_strcasecmp(tmp->ptr_value, NM_A_BLOCKING) == 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1233 user->privacy_locked = TRUE;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1234 break;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1235 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1236 tmp++;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1237 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1238 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1239 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1240
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1241 /* Set default deny flag */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1242 locate = nm_locate_field(NM_A_BLOCKING, user->fields);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1243 if (locate && locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1244 user->default_deny = atoi((char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1245 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1246
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1247 /* Read internal blocking allow list */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1248 locate = nm_locate_field(NM_A_BLOCKING_ALLOW_LIST, user->fields);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1249 if (locate && locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1250
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1251 if (locate->type == NMFIELD_TYPE_MV) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1252 locate = (NMField *)locate->ptr_value;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1253 for (; locate->tag != NULL; locate++) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1254 if (locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1255
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1256 user->allow_list = g_slist_append(user->allow_list, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1257
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1258 if (nm_find_user_record(user, (char *)locate->ptr_value) == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1259 need_details = g_slist_append(need_details, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1260
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1261 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1262 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1263 } else {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1264
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1265 user->allow_list = g_slist_append(user->allow_list, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1266
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1267 if (nm_find_user_record(user, (char *)locate->ptr_value) == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1268 need_details = g_slist_append(need_details, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1269
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1270 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1271 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1272
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1273 /* Read internal blocking deny list */
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1274 locate = nm_locate_field(NM_A_BLOCKING_DENY_LIST, user->fields);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1275 if (locate && locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1276
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1277 if (locate->type == NMFIELD_TYPE_MV) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1278 locate = (NMField *)locate->ptr_value;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1279 for (; locate->tag != NULL; locate++) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1280 if (locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1281
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1282 user->deny_list = g_slist_append(user->deny_list, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1283
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1284 if (nm_find_user_record(user, (char *)locate->ptr_value) == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1285 need_details = g_slist_append(need_details, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1286
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1287 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1288 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1289 } else {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1290
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1291 user->deny_list = g_slist_append(user->deny_list, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1292
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1293 if (nm_find_user_record(user, (char *)locate->ptr_value) == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1294 need_details = g_slist_append(need_details, (char *)locate->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1295
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1296 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1297 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1298
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1299 if (need_details) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1300
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
1301 nm_request_add_ref(request);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1302 nm_send_multiple_get_details(user, need_details,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1303 _handle_multiple_get_details_login_cb, request);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1304
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1305 return FALSE;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1306 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1307
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1308 return TRUE;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1309 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1310
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1311 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1312 nm_destroy_contact_list(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1313 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1314 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1315 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1316
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1317 if (user->root_folder) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1318 nm_release_folder(user->root_folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1319 user->root_folder = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1320 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1321 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1322
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1323 NMFolder *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1324 nm_get_root_folder(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1325 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1326 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1327 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1328
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1329 if (user->root_folder == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1330 nm_create_contact_list(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1331
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1332 return user->root_folder;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1333 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1334
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1335 NMContact *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1336 nm_find_contact(NMUser * user, const char *name)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1337 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1338 char *str;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1339 const char *dn = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1340 NMContact *contact = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1341
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1342 if (user == NULL || name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1343 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1344
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1345 str = g_utf8_strdown(name, -1);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1346 if (strstr(str, "=")) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1347 dn = str;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1348 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1349 /* Assume that we have a display id instead of a dn */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1350 dn = (const char *) g_hash_table_lookup(user->display_id_to_dn, str);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1351 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1352
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1353 /* Find contact object in reference table */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1354 if (dn) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1355 contact = (NMContact *) g_hash_table_lookup(user->contacts, dn);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1356 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1357
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1358 g_free(str);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1359 return contact;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1360 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1361
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1362 GList *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1363 nm_find_contacts(NMUser * user, const char *dn)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1364 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1365 guint32 i, cnt;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1366 NMFolder *folder;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1367 NMContact *contact;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1368 GList *contacts = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1369
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1370 if (user == NULL || dn == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1371 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1372
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1373 /* Check for contact at the root */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1374 contact = nm_folder_find_contact(user->root_folder, dn);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1375 if (contact) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1376 contacts = g_list_append(contacts, contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1377 contact = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1378 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1379
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1380 /* Check for contact in each subfolder */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1381 cnt = nm_folder_get_subfolder_count(user->root_folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1382 for (i = 0; i < cnt; i++) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1383 folder = nm_folder_get_subfolder(user->root_folder, i);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1384 contact = nm_folder_find_contact(folder, dn);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1385 if (contact) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1386 contacts = g_list_append(contacts, contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1387 contact = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1388 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1389 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1390
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1391 return contacts;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1392 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1393
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1394 NMUserRecord *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1395 nm_find_user_record(NMUser * user, const char *name)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1396 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1397 char *str = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1398 const char *dn = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1399 NMUserRecord *user_record = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1400
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1401 if (user == NULL || name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1402 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1403
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1404 str = g_utf8_strdown(name, -1);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1405 if (strstr(str, "=")) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1406 dn = str;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1407 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1408 /* Assume that we have a display id instead of a dn */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1409 dn = (const char *) g_hash_table_lookup(user->display_id_to_dn, str);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1410 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1411
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1412 /* Find user record in reference table */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1413 if (dn) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1414 user_record =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1415 (NMUserRecord *) g_hash_table_lookup(user->user_records, dn);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1416 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1417
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1418 g_free(str);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1419 return user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1420 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1421
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1422 const char *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1423 nm_lookup_dn(NMUser * user, const char *display_id)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1424 {
8744
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1425 const char *dn;
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1426 char *lower;
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1427
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1428 if (user == NULL || display_id == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1429 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1430
8744
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1431 lower = g_utf8_strdown(display_id, -1);
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1432 dn = g_hash_table_lookup(user->display_id_to_dn, lower);
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1433 g_free(lower);
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1434
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1435 return dn;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1436 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1437
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1438 NMFolder *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1439 nm_find_folder(NMUser * user, const char *name)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1440 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1441 NMFolder *folder = NULL, *temp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1442 int i, num_folders;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1443 const char *tname = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1444
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1445 if (user == NULL || name == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1446 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1447
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1448 if (*name == '\0')
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1449 return user->root_folder;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1450
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1451 num_folders = nm_folder_get_subfolder_count(user->root_folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1452 for (i = 0; i < num_folders; i++) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1453 temp = nm_folder_get_subfolder(user->root_folder, i);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1454 tname = nm_folder_get_name(temp);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1455 if (tname && (strcmp(tname, name) == 0)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1456 folder = temp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1457 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1458 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1459 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1460
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1461 return folder;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1462 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1463
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1464 NMFolder *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1465 nm_find_folder_by_id(NMUser * user, int object_id)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1466 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1467 NMFolder *folder = NULL, *temp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1468 int i, num_folders;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1469
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1470 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1471 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1472
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1473 if (object_id == 0)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1474 return user->root_folder;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1475
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1476 num_folders = nm_folder_get_subfolder_count(user->root_folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1477 for (i = 0; i < num_folders; i++) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1478 temp = nm_folder_get_subfolder(user->root_folder, i);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1479 if (nm_folder_get_id(temp) == object_id) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1480 folder = temp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1481 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1482 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1483 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1484
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1485 return folder;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1486 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1487
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1488 static void
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1489 _handle_multiple_get_details_login_cb(NMUser * user, NMERR_T ret_code,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1490 gpointer resp_data, gpointer user_data)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1491 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1492 nm_response_cb cb;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1493 NMRequest *request = user_data;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1494
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1495 if (user == NULL || request == NULL)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1496 return;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1497
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1498 if ((cb = nm_request_get_callback(request))) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1499 cb(user, ret_code, nm_request_get_data(request),
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1500 nm_request_get_user_define(request));
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
1501 nm_release_request(request);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1502 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1503 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1504
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1505 static void
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1506 _handle_multiple_get_details_joinconf_cb(NMUser * user, NMERR_T ret_code,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1507 gpointer resp_data, gpointer user_data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1508 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1509 NMRequest *request = user_data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1510 NMUserRecord *user_record = resp_data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1511 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1512 GSList *list, *node;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1513
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1514 if (user == NULL || resp_data == NULL || user_data == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1515 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1516
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1517 conference = nm_request_get_data(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1518 list = nm_request_get_user_define(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1519
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1520 if (ret_code == 0 && conference && list) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1521
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1522 /* Add the user to the conference */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1523 nm_conference_add_participant(conference, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1524
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1525 /* Find the user in the list and remove it */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1526 for (node = list; node; node = node->next) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1527 if (nm_utf8_str_equal(nm_user_record_get_dn(user_record),
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1528 (const char *) node->data)) {
14986
93c7969e2d78 [gaim-migrate @ 17696]
Stanislav Brabec <sbrabec@suse.cz>
parents: 14721
diff changeset
1529 g_free(node->data);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1530 list = g_slist_remove(list, node->data);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1531 nm_request_set_user_define(request, list);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1532 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1533 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1534 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1535
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1536 /* Time to callback? */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1537 if (g_slist_length(list) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1538 nm_response_cb cb = nm_request_get_callback(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1539
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1540 if (cb) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1541 cb(user, 0, conference, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1542 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1543 g_slist_free(list);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1544 nm_release_request(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1545 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1546 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1547 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1548
12412
8abe3226695e [gaim-migrate @ 14719]
Richard Laager <rlaager@pidgin.im>
parents: 11318
diff changeset
1549 static NMERR_T
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1550 nm_call_handler(NMUser * user, NMRequest * request, NMField * fields)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1551 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1552 NMERR_T rc = NM_OK, ret_code = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1553 NMConference *conf = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1554 NMUserRecord *user_record = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1555 NMField *locate = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1556 NMField *field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1557 const char *cmd;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1558 nm_response_cb cb;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1559 gboolean done = TRUE;
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
1560
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1561 if (user == NULL || request == NULL || fields == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1562 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1563
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1564 /* Get the return code */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1565 field = nm_locate_field(NM_A_SZ_RESULT_CODE, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1566 if (field) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1567 ret_code = atoi((char *) field->ptr_value);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1568 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1569 ret_code = NMERR_PROTOCOL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1570 }
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
1571
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1572 cmd = nm_request_get_cmd(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1573 if (ret_code == NM_OK && cmd != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1574
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1575 if (strcmp("login", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1576
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1577 user->user_record = nm_create_user_record_from_fields(fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1578
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1579 /* Save the users fields */
8744
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1580 user->fields = nm_copy_field_array(fields);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1581
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1582 nm_create_contact_list(user);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1583 done = _create_privacy_list(user, request);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1584
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1585 } else if (strcmp("setstatus", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1586
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1587 /* Nothing to do */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1588
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1589 } else if (strcmp("createconf", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1590
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1591 conf = (NMConference *) nm_request_get_data(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1592
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1593 /* get the convo guid */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1594 locate = nm_locate_field(NM_A_FA_CONVERSATION, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1595 if (locate) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1596 field =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1597 nm_locate_field(NM_A_SZ_OBJECT_ID, (NMField *) fields->ptr_value);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1598 if (field) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1599 nm_conference_set_guid(conf, (char *) field->ptr_value);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1600 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1601 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1602
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1603 nm_conference_list_add(user, conf);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1604 nm_release_conference(conf);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1605
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1606 } else if (strcmp("leaveconf", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1607
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1608 conf = (NMConference *) nm_request_get_data(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1609 nm_conference_list_remove(user, conf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1610
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1611 } else if (strcmp("joinconf", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1612 GSList *list = NULL, *node;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1613
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1614 conf = nm_request_get_data(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1615
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1616 locate = nm_locate_field(NM_A_FA_CONTACT_LIST, fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1617 if (locate && locate->ptr_value != 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1618
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1619 field = (NMField *) locate->ptr_value;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1620 while ((field = nm_locate_field(NM_A_SZ_DN, field))) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1621 if (field && field->ptr_value != 0) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1622
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1623 if (nm_utf8_str_equal
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1624 (nm_user_record_get_dn(user->user_record),
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1625 (const char *) field->ptr_value)) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1626 field++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1627 continue;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1628 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1629
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1630 user_record =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1631 nm_find_user_record(user,
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1632 (const char *) field->ptr_value);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1633 if (user_record == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1634 list =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1635 g_slist_append(list,
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1636 g_strdup((char *) field->ptr_value));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1637 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1638 nm_conference_add_participant(conf, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1639 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1640 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1641 field++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1642 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1643
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1644 if (list != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1645
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1646 done = FALSE;
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
1647 nm_request_set_user_define(request, list);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1648 nm_request_add_ref(request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1649 for (node = list; node; node = node->next) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1650
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1651 nm_send_get_details(user, (const char *) node->data,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1652 _handle_multiple_get_details_joinconf_cb,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1653 request);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1654 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1655 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1656 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1657
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1658 } else if (strcmp("getdetails", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1659
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1660 locate = nm_locate_field(NM_A_FA_RESULTS, fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1661 while (locate && locate->ptr_value != 0) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1662
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1663 user_record = nm_create_user_record_from_fields(locate);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1664 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1665 NMUserRecord *tmp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1666
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1667 tmp =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1668 nm_find_user_record(user,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1669 nm_user_record_get_dn(user_record));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1670 if (tmp) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1671
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1672 /* Update the existing user record */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1673 nm_user_record_copy(tmp, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1674 nm_release_user_record(user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1675 user_record = tmp;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1676
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1677 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1678 nm_user_add_user_record(user, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1679 nm_release_user_record(user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1680 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1681
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1682 /* Response data is new user record */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1683 nm_request_set_data(request, (gpointer) user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1684 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1685
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1686 locate = nm_locate_field(NM_A_FA_RESULTS, locate+1);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1687 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1688
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1689 } else if (strcmp("createfolder", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1690
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1691 _update_contact_list(user, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1692
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1693 } else if (strcmp("createcontact", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1694
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1695 _update_contact_list(user, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1696
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1697 locate =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1698 nm_locate_field(NM_A_SZ_OBJECT_ID, (NMField *) fields->ptr_value);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1699 if (locate) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1700
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1701 NMContact *new_contact =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1702 nm_folder_find_item_by_object_id(user->root_folder,
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1703 atoi((char *)locate->ptr_value));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1704
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1705 if (new_contact) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1706
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1707 /* Add the contact to our cache */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1708 nm_user_add_contact(user, new_contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1709
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1710 /* Set the contact as the response data */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1711 nm_request_set_data(request, (gpointer) new_contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1712
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1713 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1714
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1715 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1716
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1717 } else if (strcmp("deletecontact", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1718
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1719 _update_contact_list(user, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1720
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1721 } else if (strcmp("movecontact", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1722
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1723 _update_contact_list(user, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1724
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1725 } else if (strcmp("getstatus", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1726
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1727 locate = nm_locate_field(NM_A_SZ_STATUS, fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1728 if (locate) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1729 nm_user_record_set_status((NMUserRecord *)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1730 nm_request_get_data(request),
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1731 atoi((char *) locate->ptr_value), NULL);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1732 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1733
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1734 } else if (strcmp("updateitem", cmd) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1735
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1736 /* Nothing extra to do here */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1737
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1738 } else if (strcmp("createblock", cmd) == 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1739 if ((locate = nm_locate_field(NM_A_BLOCKING_DENY_LIST, fields))) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1740 if (locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1741 user->deny_list = g_slist_append(user->deny_list, g_strdup((char *)locate->ptr_value));
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1742 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1743 } else if ((locate = nm_locate_field(NM_A_BLOCKING_ALLOW_LIST, fields))) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1744 if (locate->ptr_value) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1745 user->allow_list = g_slist_append(user->allow_list, g_strdup((char *)locate->ptr_value));
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1746 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1747 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1748 } else if (strcmp("updateblocks", cmd) == 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1749 /* nothing to do here */
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1750 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1751
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1752 /* Nothing to do, just print debug message */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1753 gaim_debug(GAIM_DEBUG_INFO, "novell",
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1754 "nm_call_handler(): Unknown request command, %s\n", cmd);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1755
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1756 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1757 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1758
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1759 if (done && (cb = nm_request_get_callback(request))) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1760
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1761 cb(user, ret_code, nm_request_get_data(request),
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1762 nm_request_get_user_define(request));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1763 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1764
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1765 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1766 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1767
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1768 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1769 nm_process_response(NMUser * user)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1770 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1771 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1772 NMField *fields = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1773 NMField *field = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1774 NMConn *conn = user->conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1775 NMRequest *req = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1776
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1777 rc = nm_read_header(conn);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1778 if (rc == NM_OK) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1779 rc = nm_read_fields(conn, -1, &fields);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1780 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1781
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1782 if (rc == NM_OK) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1783 field = nm_locate_field(NM_A_SZ_TRANSACTION_ID, fields);
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1784 if (field != NULL && field->ptr_value != 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1785 req = nm_conn_find_request(conn, atoi((char *) field->ptr_value));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1786 if (req != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1787 rc = nm_call_handler(user, req, fields);
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
1788 nm_conn_remove_request_item(conn, req);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1789 }
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
1790
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1791 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1792 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1793
8744
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1794 if (fields)
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1795 nm_free_fields(&fields);
14a15b6f466d [gaim-migrate @ 9499]
Mike Stoddard <mistoddard@novell.com>
parents: 8684
diff changeset
1796
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1797 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1798 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1799
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1800 /*
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1801 * Some utility functions...haven't figured out where
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1802 * they belong yet.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1803 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1804 gint
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1805 nm_utf8_strcasecmp(gconstpointer str1, gconstpointer str2)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1806 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1807 gint rv;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1808 char *str1_down = g_utf8_strdown(str1, -1);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1809 char *str2_down = g_utf8_strdown(str2, -1);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1810
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1811 rv = g_utf8_collate(str1_down, str2_down);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1812
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1813 g_free(str1_down);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1814 g_free(str2_down);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1815
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1816 return rv;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1817 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1818
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1819 gboolean
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1820 nm_utf8_str_equal(gconstpointer str1, gconstpointer str2)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1821 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1822 return (nm_utf8_strcasecmp(str1, str2) == 0);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1823 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1824
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1825 char *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1826 nm_typed_to_dotted(const char *typed)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1827 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1828 unsigned i = 0, j = 0;
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8744
diff changeset
1829 char *dotted;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1830
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1831 if (typed == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1832 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1833
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8744
diff changeset
1834 dotted = g_new0(char, strlen(typed));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1835
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1836 do {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1837
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1838 /* replace comma with a dot */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1839 if (j != 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1840 dotted[j] = '.';
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1841 j++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1842 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1843
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1844 /* skip the type */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1845 while (typed[i] != '\0' && typed[i] != '=')
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1846 i++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1847
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1848 /* verify that we aren't running off the end */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1849 if (typed[i] == '\0') {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1850 dotted[j] = '\0';
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1851 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1852 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1853
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1854 i++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1855
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1856 /* copy the object name to context */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1857 while (typed[i] != '\0' && typed[i] != ',') {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1858 dotted[j] = typed[i];
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1859 j++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1860 i++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1861 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1862
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1863 } while (typed[i] != '\0');
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1864
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1865 return dotted;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1866 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1867
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1868 const char *
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1869 nm_error_to_string(NMERR_T err)
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1870 {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1871 static char *unknown_msg = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1872
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1873 g_free(unknown_msg);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1874 unknown_msg = NULL;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1875
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1876 switch (err) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1877
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1878 case NMERR_BAD_PARM:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1879 return _("Required parameters not passed in");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1880
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1881 case NMERR_TCP_WRITE:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1882 return _("Unable to write to network");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1883
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1884 case NMERR_TCP_READ:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1885 return _("Unable to read from network");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1886
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1887 case NMERR_PROTOCOL:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1888 return _("Error communicating with server");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1889
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1890 case NMERR_CONFERENCE_NOT_FOUND:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1891 case NMERR_CONFERENCE_NOT_FOUND_2:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1892 return _("Conference not found");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1893
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1894 case NMERR_CONFERENCE_NOT_INSTANTIATED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1895 return _("Conference does not exist");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1896
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1897 case NMERR_DUPLICATE_FOLDER:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1898 case NMERR_FOLDER_EXISTS:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1899 return _("A folder with that name already exists");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1900
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1901 case NMERR_NOT_SUPPORTED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1902 return _("Not supported");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1903
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1904 case NMERR_PASSWORD_EXPIRED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1905 case NMERR_PASSWORD_EXPIRED_2:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1906 return _("Password has expired");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1907
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1908 case NMERR_PASSWORD_INVALID:
15062
78e3c1c8c4f4 [gaim-migrate @ 17779]
Richard Laager <rlaager@pidgin.im>
parents: 14986
diff changeset
1909 return _("Incorrect password");
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1910
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1911 case NMERR_USER_NOT_FOUND:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1912 return _("User not found");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1913
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1914 case NMERR_USER_DISABLED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1915 return _("Account has been disabled");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1916
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1917 case NMERR_DIRECTORY_FAILURE:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1918 return _("The server could not access the directory");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1919
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1920 case NMERR_ADMIN_LOCKED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1921 return _("Your system administrator has disabled this operation");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1922
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1923 case NMERR_SERVER_BUSY:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1924 return _("The server is unavailable; try again later");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1925
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1926 case NMERR_DUPLICATE_CONTACT:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1927 return _("Cannot add a contact to the same folder twice");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1928
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1929 case NMERR_USER_NOT_ALLOWED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1930 return _("Cannot add yourself");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1931
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1932 case NMERR_MASTER_ARCHIVE_MISSING:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1933 return _("Master archive is misconfigured");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1934
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1935 case NMERR_AUTHENTICATION_FAILED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1936 case NMERR_CREDENTIALS_MISSING:
15062
78e3c1c8c4f4 [gaim-migrate @ 17779]
Richard Laager <rlaager@pidgin.im>
parents: 14986
diff changeset
1937 return _("Incorrect screen name or password");
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1938
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1939 case NMERR_HOST_NOT_FOUND:
15062
78e3c1c8c4f4 [gaim-migrate @ 17779]
Richard Laager <rlaager@pidgin.im>
parents: 14986
diff changeset
1940 return _("Could not recognize the host of the screen name you entered");
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1941
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1942 case NMERR_ACCESS_DENIED:
15062
78e3c1c8c4f4 [gaim-migrate @ 17779]
Richard Laager <rlaager@pidgin.im>
parents: 14986
diff changeset
1943 return _("Your account has been disabled because too many incorrect passwords were entered");
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1944
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1945 case NMERR_DUPLICATE_PARTICIPANT:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1946 return _("You cannot add the same person twice to a conversation");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1947
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1948 case NMERR_TOO_MANY_CONTACTS:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1949 case NMERR_TOO_MANY_FOLDERS:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1950 return _("You have reached your limit for the number of contacts allowed");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1951
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1952 case NMERR_OBJECT_NOT_FOUND:
15062
78e3c1c8c4f4 [gaim-migrate @ 17779]
Richard Laager <rlaager@pidgin.im>
parents: 14986
diff changeset
1953 return _("You have entered an incorrect screen name");
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1954
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1955 case NMERR_DIRECTORY_UPDATE:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1956 return _("An error occurred while updating the directory");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1957
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1958 case NMERR_SERVER_PROTOCOL:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1959 return _("Incompatible protocol version");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1960
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1961 case NMERR_USER_BLOCKED:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1962 return _("The user has blocked you");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1963
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1964 case NMERR_EVAL_CONNECTION_LIMIT:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1965 return _("This evaluation version does not allow more than ten users to log in at one time");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1966
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1967 case NMERR_CONVERSATION_INVITE:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1968 return _("The user is either offline or you are blocked");
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1969
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1970 default:
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1971 unknown_msg = g_strdup_printf (_("Unknown error: 0x%X"), err);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1972
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1973 return unknown_msg;
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1974 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1975 }
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1976
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1977 static void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1978 _update_contact_list(NMUser * user, NMField * fields)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1979 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1980 NMField *list, *cursor, *locate;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1981 gint objid1;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1982 NMContact *contact;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1983 NMFolder *folder;
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8744
diff changeset
1984 gpointer item;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1985
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1986 if (user == NULL || fields == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1987 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1988
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1989 /* Is it wrapped in a RESULTS array? */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1990 if (strcmp(fields->tag, NM_A_FA_RESULTS) == 0) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1991 list = (NMField *) fields->ptr_value;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1992 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1993 list = fields;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1994 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1995
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1996 /* Update the cached contact list */
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
1997 cursor = (NMField *) list->ptr_value;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1998 while (cursor->tag != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1999 if ((g_ascii_strcasecmp(cursor->tag, NM_A_FA_CONTACT) == 0) ||
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2000 (g_ascii_strcasecmp(cursor->tag, NM_A_FA_FOLDER) == 0)) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2001
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2002 locate =
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
2003 nm_locate_field(NM_A_SZ_OBJECT_ID, (NMField *) cursor->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
2004 if (locate != NULL && locate->ptr_value != 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
2005 objid1 = atoi((char *) locate->ptr_value);
8782
eb3f9bf7d69c [gaim-migrate @ 9544]
Ignacio J. Elia
parents: 8744
diff changeset
2006 item =
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2007 nm_folder_find_item_by_object_id(user->root_folder, objid1);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2008 if (item != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2009 if (cursor->method == NMFIELD_METHOD_ADD) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2010 if (g_ascii_strcasecmp(cursor->tag, NM_A_FA_CONTACT) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2011 contact = (NMContact *) item;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2012 nm_contact_update_list_properties(contact, cursor);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2013 } else if (g_ascii_strcasecmp(cursor->tag, NM_A_FA_FOLDER)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2014 == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2015 folder = (NMFolder *) item;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2016 nm_folder_update_list_properties(folder, cursor);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2017 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2018 } else if (cursor->method == NMFIELD_METHOD_DELETE) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2019 if (g_ascii_strcasecmp(cursor->tag, NM_A_FA_CONTACT) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2020 contact = (NMContact *) item;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2021 folder =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2022 nm_find_folder_by_id(user,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2023 nm_contact_get_parent_id
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2024 (contact));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2025 if (folder) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2026 nm_folder_remove_contact(folder, contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2027 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2028 } else if (g_ascii_strcasecmp(cursor->tag, NM_A_FA_FOLDER)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2029 == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2030 /* TODO: write nm_folder_remove_folder */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2031 /* ignoring for now, should not be a big deal */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2032 /* folder = (NMFolder *) item;*/
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2033 /* nm_folder_remove_folder(user->root_folder, folder);*/
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2034 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2035 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2036 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2037
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2038 if (cursor->method == NMFIELD_METHOD_ADD) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2039
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2040 /* Not found, so we need to add it */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2041 if (g_ascii_strcasecmp(cursor->tag, NM_A_FA_CONTACT) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2042
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2043 const char *dn = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2044
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2045 locate =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2046 nm_locate_field(NM_A_SZ_DN,
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
2047 (NMField *) cursor->ptr_value);
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
2048 if (locate != NULL && locate->ptr_value != 0) {
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
2049 dn = (const char *) locate->ptr_value;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2050 if (dn != NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2051 contact =
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2052 nm_create_contact_from_fields(cursor);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2053 if (contact) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2054 nm_folder_add_contact_to_list(user->
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2055 root_folder,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2056 contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2057 nm_release_contact(contact);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2058 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2059 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2060 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2061 } else if (g_ascii_strcasecmp(cursor->tag, NM_A_FA_FOLDER)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2062 == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2063 folder = nm_create_folder_from_fields(cursor);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2064 nm_folder_add_folder_to_list(user->root_folder,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2065 folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2066 nm_release_folder(folder);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2067 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2068 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2069 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2070 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2071 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2072 cursor++;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2073 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2074 }
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2075
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2076 static char *
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2077 nm_rtfize_text(char *text)
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2078 {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2079 GString *gstr = NULL;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2080 unsigned char *pch;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2081 char *uni_str = NULL, *rtf = NULL;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2082 int bytes;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2083 gunichar uc;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2084
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2085 gstr = g_string_sized_new(strlen(text)*2);
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9360
diff changeset
2086 pch = (unsigned char *)text;
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2087 while (*pch) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2088 if ((*pch) <= 0x7F) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2089 switch (*pch) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2090 case '{':
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2091 case '}':
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2092 case '\\':
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2093 gstr = g_string_append_c(gstr, '\\');
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2094 gstr = g_string_append_c(gstr, *pch);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2095 break;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2096 case '\n':
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2097 gstr = g_string_append(gstr, "\\par ");
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2098 break;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2099 default:
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2100 gstr = g_string_append_c(gstr, *pch);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2101 break;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2102 }
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2103 pch++;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2104 } else {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2105 /* convert the utf-8 character to ucs-4 for rtf encoding */
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2106 if(*pch <= 0xDF) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2107 uc = ((((gunichar)pch[0]) & 0x001F) << 6) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2108 (((gunichar)pch[1]) & 0x003F);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2109 bytes = 2;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2110 } else if(*pch <= 0xEF) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2111 uc = ((((gunichar)pch[0]) & 0x000F) << 12) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2112 ((((gunichar)pch[1]) & 0x003F) << 6) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2113 (((gunichar)pch[2]) & 0x003F);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2114 bytes = 3;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2115 } else if (*pch <= 0xF7) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2116 uc = ((((gunichar)pch[0]) & 0x0007) << 18) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2117 ((((gunichar)pch[1]) & 0x003F) << 12) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2118 ((((gunichar)pch[2]) & 0x003F) << 6) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2119 (((gunichar)pch[3]) & 0x003F);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2120 bytes = 4;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2121 } else if (*pch <= 0xFB) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2122 uc = ((((gunichar)pch[0]) & 0x0003) << 24) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2123 ((((gunichar)pch[1]) & 0x003F) << 18) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2124 ((((gunichar)pch[2]) & 0x003F) << 12) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2125 ((((gunichar)pch[3]) & 0x003F) << 6) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2126 (((gunichar)pch[4]) & 0x003F);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2127 bytes = 5;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2128 } else if (*pch <= 0xFD) {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2129 uc = ((((gunichar)pch[0]) & 0x0001) << 30) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2130 ((((gunichar)pch[1]) & 0x003F) << 24) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2131 ((((gunichar)pch[2]) & 0x003F) << 18) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2132 ((((gunichar)pch[3]) & 0x003F) << 12) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2133 ((((gunichar)pch[4]) & 0x003F) << 6) |
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2134 (((gunichar)pch[5]) & 0x003F);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2135 bytes = 6;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2136 } else {
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2137 /* should never happen ... bogus utf-8! */
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2138 gaim_debug_info("novell", "bogus utf-8 lead byte: 0x%X\n", pch[0]);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2139 uc = 0x003F;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2140 bytes = 1;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2141 }
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2142 uni_str = g_strdup_printf("\\u%d?", uc);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2143 gaim_debug_info("novell", "unicode escaped char %s\n", uni_str);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2144 gstr = g_string_append(gstr, uni_str);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2145 pch += bytes;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2146 g_free(uni_str);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2147 }
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2148 }
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2149
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2150 rtf = g_strdup_printf(RTF_TEMPLATE, gstr->str);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2151 g_string_free(gstr, TRUE);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2152 return rtf;
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
2153 }

mercurial