2007-05-23 Marcus Bauer <marcusb@openismus.com>
[modest] / libmodest-dbus-client / libmodest-dbus-client.c
1 /* Copyright (c) 2007, Nokia Corporation
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  *   notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  *   notice, this list of conditions and the following disclaimer in the
12  *   documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Nokia Corporation nor the names of its
14  *   contributors may be used to endorse or promote products derived from
15  *   this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #include "libmodest-dbus-client.h"
31 #include <dbus_api/modest-dbus-api.h> /* For the API strings. */
32
33 gboolean
34 libmodest_dbus_client_send_mail (osso_context_t *osso_context, const gchar *to, const gchar *cc, 
35         const gchar *bcc, const gchar* subject, const gchar* body, GSList *attachments)
36 {
37         osso_rpc_t retval;
38         const osso_return_t ret = osso_rpc_run_with_defaults(osso_context, 
39                    MODEST_DBUS_NAME, 
40                    MODEST_DBUS_METHOD_SEND_MAIL, &retval, 
41                    DBUS_TYPE_STRING, to, 
42                    DBUS_TYPE_STRING, cc, 
43                    DBUS_TYPE_STRING, bcc, 
44                    DBUS_TYPE_STRING, subject, 
45                    DBUS_TYPE_STRING, body, 
46                    DBUS_TYPE_INVALID);
47                 
48         if (ret != OSSO_OK) {
49                 printf("debug: osso_rpc_run() failed.\n");
50                 return FALSE;
51         } else {
52                 printf("debug: osso_rpc_run() succeeded.\n");
53         }
54         
55         osso_rpc_free_val(&retval);
56         
57         return TRUE;
58 }
59         
60 gboolean 
61 libmodest_dbus_client_mail_to (osso_context_t *osso_context, const gchar *mailto_uri)
62 {
63         osso_rpc_t retval;
64         const osso_return_t ret = osso_rpc_run_with_defaults(osso_context, 
65                    MODEST_DBUS_NAME, 
66                    MODEST_DBUS_METHOD_MAIL_TO, &retval, 
67                    DBUS_TYPE_STRING, mailto_uri, 
68                    DBUS_TYPE_INVALID);
69                 
70         if (ret != OSSO_OK) {
71                 printf("debug: osso_rpc_run() failed.\n");
72                 return FALSE;
73         } else {
74                 printf("debug: osso_rpc_run() succeeded.\n");
75         }
76         
77         osso_rpc_free_val(&retval);
78         
79         return TRUE;
80 }
81
82 gboolean
83 libmodest_dbus_client_compose_mail (osso_context_t *osso_context, const gchar *to, const gchar *cc, 
84         const gchar *bcc, const gchar* subject, const gchar* body, GSList *attachments)
85 {
86         osso_rpc_t retval;
87         gchar *attachments_str = NULL;
88         gchar *tmp = NULL;
89         GSList *next = NULL;
90         
91         attachments_str = g_strdup( (gchar *) attachments->data );
92         
93         for (next = g_slist_next(attachments); next != NULL; next = g_slist_next(next))
94         {
95                 tmp = g_strconcat(attachments_str, ",", (gchar *) (next->data), NULL);
96                 g_free(attachments_str);
97                 attachments_str = tmp;
98                 if (attachments_str == NULL) {
99                         return OSSO_ERROR;
100                 }
101         }
102
103         const osso_return_t ret = osso_rpc_run_with_defaults(osso_context, 
104                    MODEST_DBUS_NAME, 
105                    MODEST_DBUS_METHOD_COMPOSE_MAIL, &retval, 
106                    DBUS_TYPE_STRING, to, 
107                    DBUS_TYPE_STRING, cc, 
108                    DBUS_TYPE_STRING, bcc, 
109                    DBUS_TYPE_STRING, subject, 
110                    DBUS_TYPE_STRING, body,
111                    DBUS_TYPE_STRING, attachments_str,
112                    DBUS_TYPE_INVALID);
113                 
114         if (ret != OSSO_OK) {
115                 printf("debug: osso_rpc_run() failed.\n");
116                 return FALSE;
117         } else {
118                 printf("debug: osso_rpc_run() succeeded.\n");
119         }
120         
121         osso_rpc_free_val(&retval);
122         
123         return TRUE;
124 }
125
126 gboolean 
127 libmodest_dbus_client_open_message (osso_context_t *osso_context, const gchar *mail_uri)
128 {
129         osso_rpc_t retval;
130         const osso_return_t ret = osso_rpc_run_with_defaults(osso_context, 
131                    MODEST_DBUS_NAME, 
132                    MODEST_DBUS_METHOD_OPEN_MESSAGE, &retval, 
133                    DBUS_TYPE_STRING, mail_uri, 
134                    DBUS_TYPE_INVALID);
135                 
136         if (ret != OSSO_OK) {
137                 printf("debug: osso_rpc_run() failed.\n");
138                 return FALSE;
139         } else {
140                 printf("debug: osso_rpc_run() succeeded.\n");
141         }
142         
143         osso_rpc_free_val(&retval);
144         
145         return TRUE;
146 }
147
148 gboolean 
149 libmodest_dbus_client_send_and_receive (osso_context_t *osso_context)
150 {
151         osso_rpc_t retval;
152         const osso_return_t ret = osso_rpc_run_with_defaults(osso_context, 
153                    MODEST_DBUS_NAME, 
154                    MODEST_DBUS_METHOD_SEND_RECEIVE, &retval, 
155                    DBUS_TYPE_INVALID);
156                 
157         if (ret != OSSO_OK) {
158                 printf("debug: osso_rpc_run() failed.\n");
159                 return FALSE;
160         } else {
161                 printf("debug: osso_rpc_run() succeeded.\n");
162         }
163         
164         osso_rpc_free_val(&retval);
165         
166         return TRUE;
167 }