aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test14.c
diff options
context:
space:
mode:
authorMichael Zucci <zucchi@src.gnome.org>2000-05-20 00:17:13 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-05-20 00:17:13 +0800
commitae208c7e8ff0463666c52392553af2572a8ee9b5 (patch)
treeeeccba976c4f17fca2c479cce3c14c9b657e2775 /tests/test14.c
parentcfcf5e016ca8acab994c301101280331cab54a0d (diff)
downloadgsoc2013-evolution-ae208c7e8ff0463666c52392553af2572a8ee9b5.tar.gz
gsoc2013-evolution-ae208c7e8ff0463666c52392553af2572a8ee9b5.tar.zst
gsoc2013-evolution-ae208c7e8ff0463666c52392553af2572a8ee9b5.zip
A little vfolder test.
svn path=/trunk/; revision=3137
Diffstat (limited to 'tests/test14.c')
-rw-r--r--tests/test14.c177
1 files changed, 177 insertions, 0 deletions
diff --git a/tests/test14.c b/tests/test14.c
new file mode 100644
index 0000000000..80963415db
--- /dev/null
+++ b/tests/test14.c
@@ -0,0 +1,177 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ Test vfolder.
+ */
+
+
+#include <camel/camel.h>
+#include <camel/camel-exception.h>
+#include <camel/camel-folder.h>
+#include <camel/providers/vee/camel-vee-folder.h>
+#include <camel/md5-utils.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <glib.h>
+
+static void
+dump_message_content(CamelDataWrapper *object)
+{
+ CamelDataWrapper *containee;
+ CamelStream *stream;
+ int parts, i;
+ int len;
+ int left;
+ char buffer[128];
+
+ printf("Dumping message ...");
+
+ containee = camel_medium_get_content_object(CAMEL_MEDIUM(object));
+
+ if (containee) {
+ char *type = gmime_content_field_get_mime_type(containee->mime_type);
+
+ printf("type = %s\n", type);
+
+ if (CAMEL_IS_MULTIPART(containee)) {
+ parts = camel_multipart_get_number (CAMEL_MULTIPART(containee));
+ printf("multipart message, scanning contents %d parts ...\n", parts);
+ for (i=0;i<parts;i++) {
+ dump_message_content(CAMEL_DATA_WRAPPER (camel_multipart_get_part(CAMEL_MULTIPART(containee), i)));
+ }
+ } else if (CAMEL_IS_MIME_MESSAGE(containee)) {
+ dump_message_content((CamelDataWrapper *)containee);
+ } else {
+ stream = camel_data_wrapper_get_output_stream(containee);
+ left = 0;
+
+ if (stream) {
+ while ( (len = camel_stream_read(stream, buffer+left, sizeof(buffer)-left, NULL)) > 0) {
+ fwrite(buffer, len, 1, stdout);
+ }
+ printf("\n");
+ } else {
+ g_warning("cannot get stream for message?");
+ }
+ }
+
+ g_free(type);
+ } else {
+ printf("no containee?\n");
+ }
+}
+
+
+static char *
+auth_callback(char *prompt, gboolean secret,
+ CamelService *service, char *item,
+ CamelException *ex)
+{
+ printf ("auth_callback called: %s\n", prompt);
+ return NULL;
+}
+
+int
+main (int argc, char**argv)
+{
+ CamelSession *session;
+ CamelException *ex;
+ CamelStore *store;
+ gchar *store_url = "vfolder:";
+ CamelFolder *folder;
+ GList *n, *matches;
+
+ gtk_init (&argc, &argv);
+ camel_init ();
+ ex = camel_exception_new ();
+
+ session = camel_session_new (auth_callback);
+
+ camel_provider_load (session, "../camel/providers/vee/.libs/libcamelvee.so.0", ex);
+ if (camel_exception_get_id (ex)) {
+ printf ("Exceptions suck: %s\n", camel_exception_get_description (ex));
+ return 1;
+ }
+
+ store = camel_session_get_store (session, store_url, ex);
+ if (camel_exception_get_id (ex)) {
+ printf ("Exception caught in camel_session_get_store\n"
+ "Full description : %s\n", camel_exception_get_description (ex));
+ return -1;
+ }
+
+ printf("get folder\n");
+
+ folder = camel_store_get_folder (store, "gnome_email?(match-all (header-contains \"subject\" \"gnome\"))", ex);
+ if (camel_exception_get_id (ex)) {
+ printf ("Exception caught in camel_store_get_folder\n"
+ "Full description : %s\n", camel_exception_get_description (ex));
+ return -1;
+ }
+
+ /* setup searched folders */
+ {
+ CamelFolder *subfolder;
+ CamelStore *substore;
+
+ substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Inbox", ex);
+ subfolder = camel_store_get_folder(substore, "mbox", ex);
+ camel_folder_open (subfolder, FOLDER_OPEN_READ, ex);
+ camel_vee_folder_add_folder(folder, subfolder);
+
+ if (camel_exception_get_id (ex)) {
+ printf ("Exception caught in camel_store_get_folder\n"
+ "Full description : %s\n", camel_exception_get_description (ex));
+ return -1;
+ }
+
+ substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Outbox", ex);
+ subfolder = camel_store_get_folder(substore, "mbox", ex);
+ camel_folder_open (subfolder, FOLDER_OPEN_READ, ex);
+ camel_vee_folder_add_folder(folder, subfolder);
+
+ if (camel_exception_get_id (ex)) {
+ printf ("Exception caught in camel_store_get_folder\n"
+ "Full description : %s\n", camel_exception_get_description (ex));
+ return -1;
+ }
+ }
+
+ printf("open folder\n");
+
+ camel_folder_open (folder, FOLDER_OPEN_READ, ex);
+ if (camel_exception_get_id (ex)) {
+ printf ("Exception caught when trying to open the folder\n"
+ "Full description : %s\n", camel_exception_get_description (ex));
+ return -1;
+ }
+
+ printf("vfolder's uid's:\n");
+ n = camel_folder_get_uid_list(folder, ex);
+ while (n) {
+ CamelMimeMessage *m;
+
+ printf("uid: %s\n", (char *) n->data);
+
+ m = camel_folder_get_message_by_uid(folder, n->data, ex);
+ if (m) {
+ dump_message_content(m);
+ gtk_object_unref(m);
+ }
+ n = g_list_next(n);
+ }
+
+ camel_folder_close (folder, TRUE, ex);
+
+ gtk_object_unref((GtkObject *)folder);
+
+ return 0;
+}
+
+
+
+