1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
4 * Sankar P <psankar@novell.com>
5 * Shreyas Srinivasan <sshreyas@novell.com>
7 * Copyright 2003, Novell, Inc.
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of version 2 of the GNU Lesser General Public
11 * License as published by the Free Software Foundation.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
28 #include "e-gw-proxy.h"
29 #include "e-gw-message.h"
32 e_gw_proxy_construct_proxy_access_list (SoupSoapParameter *param, GList **proxy_list)
34 /* parse the response and create the individual proxy accounts */
35 SoupSoapParameter *subparam;
36 SoupSoapParameter *type_param;
37 SoupSoapParameter *individual_rights;
41 for (subparam = soup_soap_parameter_get_first_child_by_name (param, "entry");
43 subparam = soup_soap_parameter_get_next_child_by_name (subparam, "entry")) {
45 proxyHandler *aclInstance;
46 aclInstance = (proxyHandler *) g_malloc0 (sizeof(proxyHandler));
47 aclInstance->permissions = 0;
48 aclInstance->flags = 0;
49 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "email");
52 value = soup_soap_parameter_get_string_value (type_param);
53 aclInstance->proxy_email = g_strdup_printf("%s", value);
56 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "displayName");
59 value = soup_soap_parameter_get_string_value (type_param);
60 aclInstance->proxy_name = g_strdup_printf ("%s", value);
62 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "id");
65 value = soup_soap_parameter_get_string_value (type_param);
66 aclInstance->uniqueid = g_strdup_printf ("%s", value);
68 aclInstance->uniqueid = NULL;
70 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "mail");
73 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"read");
74 if (individual_rights) {
75 value = soup_soap_parameter_get_string_value (individual_rights);
76 aclInstance->permissions |= E_GW_PROXY_MAIL_READ;
78 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"write");
79 if (individual_rights) {
80 value = soup_soap_parameter_get_string_value (individual_rights);
81 aclInstance->permissions |= E_GW_PROXY_MAIL_WRITE;
89 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "appointment");
91 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"read");
92 if (individual_rights) {
93 value = soup_soap_parameter_get_string_value (individual_rights);
94 aclInstance->permissions |= E_GW_PROXY_APPOINTMENT_READ;
96 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"write");
97 if (individual_rights) {
98 value = soup_soap_parameter_get_string_value (individual_rights);
99 aclInstance->permissions |= E_GW_PROXY_APPOINTMENT_WRITE;
106 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "task");
108 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"read");
109 if (individual_rights) {
110 value = soup_soap_parameter_get_string_value (individual_rights);
111 aclInstance->permissions |= E_GW_PROXY_TASK_READ;
113 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"write");
114 if (individual_rights) {
115 value = soup_soap_parameter_get_string_value (individual_rights);
116 aclInstance->permissions |= E_GW_PROXY_TASK_WRITE;
123 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "note");
125 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"read");
126 if (individual_rights) {
127 value = soup_soap_parameter_get_string_value (individual_rights);
128 aclInstance->permissions |= E_GW_PROXY_NOTES_READ;
130 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"write");
131 if (individual_rights) {
132 value = soup_soap_parameter_get_string_value (individual_rights);
133 aclInstance->permissions |= E_GW_PROXY_NOTES_WRITE;
140 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "misc");
143 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"alarms");
144 if (individual_rights) {
145 value = soup_soap_parameter_get_string_value (individual_rights);
146 aclInstance->permissions |= E_GW_PROXY_GET_ALARMS;
148 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"notify");
149 if (individual_rights) {
150 value = soup_soap_parameter_get_string_value (individual_rights);
151 aclInstance->permissions |= E_GW_PROXY_GET_NOTIFICATIONS;
153 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"setup");
154 if (individual_rights) {
155 value = soup_soap_parameter_get_string_value (individual_rights);
156 aclInstance->permissions |= E_GW_PROXY_MODIFY_FOLDERS;
158 individual_rights= soup_soap_parameter_get_first_child_by_name (type_param,"readHidden");
159 if (individual_rights) {
160 value = soup_soap_parameter_get_string_value (individual_rights);
161 aclInstance->permissions |= E_GW_PROXY_READ_PRIVATE;
167 *proxy_list = g_list_append(*proxy_list, aclInstance);
172 e_gw_proxy_construct_proxy_list (SoupSoapParameter *param, GList **proxy_info)
174 SoupSoapParameter *subparam;
175 SoupSoapParameter *type_param;
178 for (subparam = soup_soap_parameter_get_first_child_by_name (param, "proxy");
180 subparam = soup_soap_parameter_get_next_child_by_name (subparam, "proxy"))
183 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "displayName");
186 value = soup_soap_parameter_get_string_value (type_param);
187 *proxy_info = g_list_append(*proxy_info, value);
189 type_param = soup_soap_parameter_get_first_child_by_name (subparam, "email");
192 value = soup_soap_parameter_get_string_value (type_param);
193 *proxy_info = g_list_append(*proxy_info, value);
199 e_gw_proxy_form_soap_request_from_proxyHandler (SoupSoapMessage *msg, proxyHandler *new_proxy)
201 gboolean added = FALSE;
202 e_gw_message_write_string_parameter (msg, "email", NULL, new_proxy->proxy_email);
203 e_gw_message_write_string_parameter (msg, "displayName", NULL, new_proxy->proxy_name);
205 if (new_proxy->permissions & E_GW_PROXY_MAIL_READ){
207 soup_soap_message_start_element (msg, "mail", NULL, NULL);
208 e_gw_message_write_int_parameter (msg, "read", NULL, 1);
210 if (new_proxy->permissions & E_GW_PROXY_MAIL_WRITE){
213 soup_soap_message_start_element (msg, "mail", NULL, NULL);
215 e_gw_message_write_int_parameter (msg, "write", NULL, 1);
218 soup_soap_message_end_element(msg);
221 if (new_proxy->permissions & E_GW_PROXY_APPOINTMENT_READ){
223 soup_soap_message_start_element (msg, "appointment", NULL, NULL);
224 e_gw_message_write_int_parameter (msg, "read", NULL, 1);
226 if (new_proxy->permissions & E_GW_PROXY_APPOINTMENT_WRITE){
230 soup_soap_message_start_element (msg, "appointment", NULL, NULL);
232 e_gw_message_write_int_parameter (msg, "write", NULL, 1);
235 soup_soap_message_end_element (msg);
238 if (new_proxy->permissions & E_GW_PROXY_TASK_READ){
240 soup_soap_message_start_element (msg, "task", NULL, NULL);
241 e_gw_message_write_int_parameter (msg, "read", NULL, 1);
243 if (new_proxy->permissions & E_GW_PROXY_TASK_WRITE){
247 soup_soap_message_start_element (msg, "task", NULL, NULL);
249 e_gw_message_write_int_parameter (msg, "write", NULL, 1);
252 soup_soap_message_end_element(msg);
255 if (new_proxy->permissions & E_GW_PROXY_NOTES_READ){
257 soup_soap_message_start_element (msg, "note", NULL, NULL);
258 e_gw_message_write_int_parameter (msg, "read", NULL, 1);
260 if (new_proxy->permissions & E_GW_PROXY_NOTES_WRITE){
264 soup_soap_message_start_element (msg, "note", NULL, NULL);
266 e_gw_message_write_int_parameter (msg, "write", NULL, 1);
269 soup_soap_message_end_element(msg);
272 if (new_proxy->permissions & E_GW_PROXY_GET_ALARMS){
274 soup_soap_message_start_element(msg,"misc",NULL,NULL);
275 e_gw_message_write_int_parameter (msg, "alarms", NULL, 1);
277 if (new_proxy->permissions & E_GW_PROXY_GET_NOTIFICATIONS){
281 soup_soap_message_start_element(msg,"misc",NULL,NULL);
283 e_gw_message_write_int_parameter (msg, "notify", NULL, 1);
286 if (new_proxy->permissions & E_GW_PROXY_MODIFY_FOLDERS){
290 soup_soap_message_start_element(msg,"misc",NULL,NULL);
292 e_gw_message_write_int_parameter (msg, "setup", NULL, 1);
294 if (new_proxy->permissions & E_GW_PROXY_READ_PRIVATE){
298 soup_soap_message_start_element(msg,"misc",NULL,NULL);
300 e_gw_message_write_int_parameter (msg, "readHidden", NULL, 1);
303 soup_soap_message_end_element(msg);
308 e_gw_proxy_form_proxy_add_msg (SoupSoapMessage *msg, proxyHandler *new_proxy)
310 soup_soap_message_start_element (msg, "entry", NULL, NULL);
312 e_gw_proxy_form_soap_request_from_proxyHandler (msg, new_proxy);
316 e_gw_proxy_form_proxy_remove_msg (SoupSoapMessage *msg, proxyHandler *removeProxy)
318 e_gw_message_write_string_parameter (msg, "id", NULL, removeProxy->uniqueid);
322 e_gw_proxy_form_modify_proxy_msg (SoupSoapMessage *msg, proxyHandler *new_proxy)
324 soup_soap_message_start_element (msg, "updates", NULL, NULL);
326 soup_soap_message_start_element (msg, "delete", NULL, NULL);
327 soup_soap_message_end_element (msg);
329 soup_soap_message_start_element (msg, "add", NULL, NULL);
330 e_gw_proxy_form_soap_request_from_proxyHandler (msg, new_proxy);
331 soup_soap_message_end_element (msg);
333 soup_soap_message_end_element (msg);
337 e_gw_proxy_parse_proxy_login_response (SoupSoapParameter *param, int *permissions)
339 SoupSoapParameter *subparam;
341 SoupSoapParameter *individual_rights;
344 subparam = soup_soap_parameter_get_first_child_by_name (param, "mail");
347 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"read");
348 if (individual_rights) {
349 value = soup_soap_parameter_get_string_value (individual_rights);
350 *permissions |= E_GW_PROXY_MAIL_READ;
352 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"write");
353 if (individual_rights) {
354 value = soup_soap_parameter_get_string_value (individual_rights);
355 *permissions |= E_GW_PROXY_MAIL_WRITE;
363 subparam = soup_soap_parameter_get_first_child_by_name (param, "appointment");
365 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"read");
366 if (individual_rights) {
367 value = soup_soap_parameter_get_string_value (individual_rights);
368 *permissions |= E_GW_PROXY_APPOINTMENT_READ;
370 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"write");
371 if (individual_rights) {
372 value = soup_soap_parameter_get_string_value (individual_rights);
373 *permissions |= E_GW_PROXY_APPOINTMENT_WRITE;
380 subparam = soup_soap_parameter_get_first_child_by_name (param, "task");
382 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"read");
383 if (individual_rights) {
384 value = soup_soap_parameter_get_string_value (individual_rights);
385 *permissions |= E_GW_PROXY_TASK_READ;
387 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"write");
388 if (individual_rights) {
389 value = soup_soap_parameter_get_string_value (individual_rights);
390 *permissions |= E_GW_PROXY_TASK_WRITE;
397 subparam = soup_soap_parameter_get_first_child_by_name (param, "note");
399 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"read");
400 if (individual_rights) {
401 value = soup_soap_parameter_get_string_value (individual_rights);
402 *permissions |= E_GW_PROXY_NOTES_READ;
404 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"write");
405 if (individual_rights) {
406 value = soup_soap_parameter_get_string_value (individual_rights);
407 *permissions |= E_GW_PROXY_NOTES_WRITE;
414 subparam = soup_soap_parameter_get_first_child_by_name (param, "misc");
417 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"alarms");
418 if (individual_rights) {
419 value = soup_soap_parameter_get_string_value (individual_rights);
420 *permissions |= E_GW_PROXY_GET_ALARMS;
422 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"notify");
423 if (individual_rights) {
424 value = soup_soap_parameter_get_string_value (individual_rights);
425 *permissions |= E_GW_PROXY_GET_NOTIFICATIONS;
427 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"setup");
428 if (individual_rights) {
429 value = soup_soap_parameter_get_string_value (individual_rights);
430 *permissions |= E_GW_PROXY_MODIFY_FOLDERS;
432 individual_rights= soup_soap_parameter_get_first_child_by_name (subparam,"readHidden");
433 if (individual_rights) {
434 value = soup_soap_parameter_get_string_value (individual_rights);
435 *permissions |= E_GW_PROXY_READ_PRIVATE;