aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mail-remote/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/mail-remote/client.c')
-rw-r--r--plugins/mail-remote/client.c342
1 files changed, 0 insertions, 342 deletions
diff --git a/plugins/mail-remote/client.c b/plugins/mail-remote/client.c
deleted file mode 100644
index 2c633c9d1d..0000000000
--- a/plugins/mail-remote/client.c
+++ /dev/null
@@ -1,342 +0,0 @@
-
-#include <stdio.h>
-#include <string.h>
-
-#include <libbonobo.h>
-
-#include "Evolution-DataServer-Mail.h"
-
-#include "evolution-mail-sessionlistener.h"
-#include "evolution-mail-storelistener.h"
-#include "evolution-mail-folderlistener.h"
-#include "evolution-mail-messagestream.h"
-
-#include "shell/e-shell.h"
-
-#include <camel/camel-folder.h>
-
-static EvolutionMailSessionListener *listener_sess;
-static EvolutionMailStoreListener *listener_store;
-static EvolutionMailFolderListener *listener_folder;
-
-#if 0
-static char *
-em_map_mail_ex(CORBA_Environment *ev, void *data)
-{
- Evolution_Mail_MailException *x = CORBA_exception_value(ev);
-
- switch (x->id) {
- case Evolution_Mail_SYSTEM_ERROR:
- return g_strdup_printf(_("System error: %s"), x->desc);
- case Evolution_Mail_CAMEL_ERROR:
- return g_strdup_printf(_("Camel error: %s"), x->desc);
- default:
- return g_strdup(x->desc);
- }
-}
-#endif
-
-static void e_mail_exception_dump(CORBA_Environment *ev, char *what)
-{
-#if 0
- static int init = 0;
- char *d;
-
- /* *shrug* this doesn't work */
- if (!init) {
- bonobo_exception_add_handler_fn(ex_Evolution_Mail_MailException, em_map_mail_ex, NULL, NULL);
- init = 1;
- }
-
- d = bonobo_exception_get_text(ev);
-
- if (d) {
- printf("Failed %s: %s\n", what, d);
- g_free(d);
- }
- CORBA_exception_free(ev);
-#else
- const char *id = CORBA_exception_id(ev);
-
- switch (ev->_major) {
- case CORBA_USER_EXCEPTION:
- if (!strcmp(id, ex_Evolution_Mail_MailException)) {
- Evolution_Mail_MailException *x = CORBA_exception_value(ev);
-
- switch (x->id) {
- case Evolution_Mail_SYSTEM_ERROR:
- printf("Failed %s: System error %s\n", what, x->desc);
- break;
- case Evolution_Mail_CAMEL_ERROR:
- printf("Failed %s: Camel error %s\n", what, x->desc);
- break;
- default:
- printf("Failed %s: %s\n", what, x->desc);
- break;
- }
- break;
- }
- default:
- printf("Failed %s: %s\n", what, id);
- break;
- }
-
- CORBA_exception_free(ev);
-#endif
-}
-
-static Evolution_Mail_Session
-get_session(void)
-{
- Evolution_Mail_Session sess = NULL;
- CORBA_Environment ev = { 0 };
- GNOME_Evolution_Component mail;
- GNOME_Evolution_Shell shell;
-
- shell = bonobo_activation_activate_from_id("OAFIID:GNOME_Evolution_Shell:2.4", 0, NULL, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "activating shell");
- return NULL;
- }
-
- do {
- mail = GNOME_Evolution_Shell_findComponent(shell, "mail", &ev);
- if (ev._major == CORBA_USER_EXCEPTION
- && !strcmp(ev._id, ex_GNOME_Evolution_Shell_NotReady)) {
- CORBA_exception_free(&ev);
- printf("Shell not ready yet, waiting\n");
- sleep(1);
- } else if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "finding mail component");
- CORBA_Object_release(shell, NULL);
- return NULL;
- } else
- break;
- } while (1);
-
- printf("got mail interface\n");
- GNOME_Evolution_MailComponent_test(mail, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "testing mail interface?");
- }
-
- sess = Bonobo_Unknown_queryInterface(mail, "IDL:Evolution/Mail/Session:1.0", &ev);
- if (sess == NULL || ev._major != CORBA_NO_EXCEPTION) {
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "querying for session interface");
- else
- printf("can't find session interface?\n");
- CORBA_Object_release(shell, NULL);
- CORBA_Object_release(mail, NULL);
- return NULL;
- }
-
- printf("got session interface: %p\n", sess);
-
- listener_sess = evolution_mail_sessionlistener_new();
- listener_store = evolution_mail_storelistener_new();
- listener_folder = evolution_mail_folderlistener_new();
- Evolution_Mail_Session_addListener(sess, bonobo_object_corba_objref((BonoboObject *)listener_sess), &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "adding store listener");
- return NULL;
- }
-
- return sess;
-}
-
-static void
-list_folder(Evolution_Mail_Folder folder)
-{
- CORBA_Environment ev = { 0 };
- Evolution_Mail_MessageIterator iter;
- int more, total = 0;
-
- iter = Evolution_Mail_Folder_getMessages(folder, "", &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting mssages");
- return;
- }
-
- do {
- Evolution_Mail_MessageInfos *msgs;
- int i;
-
- msgs = Evolution_Mail_MessageIterator_next(iter, 50, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting next messages");
- break;
- }
-
- /* NB: set the first 50 messages in private to unseen */
- if (total == 0) {
- Evolution_Mail_MessageInfoSets *changes;
- int j;
-
- changes = Evolution_Mail_MessageInfoSets__alloc();
- changes->_length = msgs->_length;
- changes->_maximum = msgs->_maximum;
- changes->_buffer = Evolution_Mail_MessageInfoSets_allocbuf(changes->_maximum);
- for (j=0;j<msgs->_length;j++) {
- changes->_buffer[j].uid = CORBA_string_dup(msgs->_buffer[j].uid);
- changes->_buffer[j].flagSet = 0;
- changes->_buffer[j].flagMask = CAMEL_MESSAGE_SEEN;
- }
- Evolution_Mail_Folder_changeMessages(folder, changes, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "changing messages");
- }
-
- total += msgs->_length;
- more = msgs->_length == 50;
-#if 0
- for (i=0;i<msgs->_length;i++) {
- printf("uid: %s '%s'\n", msgs->_buffer[i].uid, msgs->_buffer[i].subject);
- }
-#endif
- CORBA_free(msgs);
- } while (more);
-
- printf("calling dispose\n");
- Evolution_Mail_MessageIterator_dispose(iter, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "disposing messageiterator");
-
- CORBA_Object_release(iter, &ev);
-
- printf("Got %d messages total\n", total);
-}
-
-static void
-add_message(Evolution_Mail_Folder folder, const char *msg)
-{
- BonoboObject *mem;
- CORBA_Environment ev = { 0 };
- Evolution_Mail_MessageInfoSet mis = { 0 };
-
- mis.uid = "";
- mis.flagSet = CAMEL_MESSAGE_SEEN;
- mis.flagMask = CAMEL_MESSAGE_SEEN;
-
- mem = (BonoboObject *)evolution_mail_messagestream_new_buffer(msg, strlen(msg));
-
- printf("attempt send mail to store\n");
- Evolution_Mail_Folder_appendMessage(folder, &mis, bonobo_object_corba_objref(mem), &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- printf("appendmessage failed: %s\n", ev._id);
- CORBA_exception_free(&ev);
- CORBA_exception_init(&ev);
- }
-}
-
-static int domain(void *data)
-{
- Evolution_Mail_Session sess;
- Evolution_Mail_StoreInfos *stores;
- Evolution_Mail_FolderInfos *folders;
- CORBA_Environment ev = { 0 };
- int i, j, f;
-
- sess = get_session();
-
- stores = Evolution_Mail_Session_getStores(sess, "", bonobo_object_corba_objref((BonoboObject *)listener_store), &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting stores");
- _exit(1);
- return 0;
- }
-
- printf("Got %d stores\n", stores->_length);
- for (i=0;i<stores->_length;i++) {
-#if 0
- Evolution_Mail_PropertyName namesarray[] = {
- "name", "uid"
- };
- Evolution_Mail_PropertyNames names = {
- 2, 2,
- namesarray,
- FALSE,
- };
- Evolution_Mail_Properties *props;
-#endif
- Evolution_Mail_Store store = stores->_buffer[i].store;
-
- printf("store %p '%s' uid '%s'\n", store, stores->_buffer[i].name, stores->_buffer[i].uid);
-
-#if 0
- Evolution_Mail_Store_getProperties(store, &names, &props, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting store properties");
- return 1;
- }
-
- for (j=0;j<props->_length;j++) {
- printf(" %s = (%s)", props->_buffer[j].name, (char *)ORBit_tk_to_name(props->_buffer[j].value._type->kind));
- if (props->_buffer[j].value._type == TC_CORBA_string) {
- printf(" '%s'\n", (char *)props->_buffer[j].value._value);
- } else {
- printf(" '%s' ", BONOBO_ARG_GET_STRING(&props->_buffer[j].value));
- printf(" <unknonw type>\n");
- }
- }
-
- CORBA_free(props);
-#endif
-
-#if 1
- {
- char *msg = "To: notzed@novell.com\r\n"
- "Subject: This is a test from auto-send\r\n"
- "\r\n"
- "Blah blah, test message!\r\n";
- BonoboObject *mem;
-
- mem = (BonoboObject *)evolution_mail_messagestream_new_buffer(msg, strlen(msg));
-
- printf("attempt send mail to store\n");
- Evolution_Mail_Store_sendMessage(store, bonobo_object_corba_objref(mem), &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "sending message to store");
- /* If we get a system exception, do we have to dispose it ourselves?? */
- }
-#endif
-
- folders = Evolution_Mail_Store_getFolders(store, "", bonobo_object_corba_objref((BonoboObject *)listener_folder), &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting folders");
- } else {
- for (f = 0; f<folders->_length;f++) {
- printf("folder %p full:'%s' name:'%s'\n", folders->_buffer[f].folder, folders->_buffer[f].full_name, folders->_buffer[f].name);
- }
-
- for (f = 0; f<folders->_length;f++) {
- if (!strcmp(folders->_buffer[f].full_name, "Private")) {
- const char *msg = "To: notzed@novell.com\r\n"
- "Subject: This is a test append from client\r\n"
- "\r\n"
- "Blah blah, test appended message!\r\n";
-
- list_folder(folders->_buffer[f].folder);
- add_message(folders->_buffer[f].folder, msg);
- }
- }
-
- }
- CORBA_free(folders);
- }
-
- CORBA_free(stores);
-
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- bonobo_init(&argc, argv);
-
- g_idle_add(domain, NULL);
-
- bonobo_main();
-
- return 0;
-}