I18N: Update catalogue
[libisds.git] / client / sendmultiple.c
blob09bd1eb01ffa6294eb4f872e293cb4113d21d24e
1 #define _XOPEN_SOURCE 500
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <locale.h>
5 #include <time.h>
6 #include <string.h>
7 #include <isds.h>
8 #include "common.h"
11 int main(int argc, char **argv) {
12 struct isds_ctx *ctx = NULL;
13 isds_error err;
14 char *recipient1 = NULL, *recipient2 = NULL;
16 setlocale(LC_ALL, "");
18 err = isds_init();
19 if (err) {
20 printf("isds_init() failed: %s\n", isds_strerror(err));
21 exit(EXIT_FAILURE);
24 isds_set_logging(ILF_ALL & ~ILF_HTTP, ILL_ALL);
26 ctx = isds_ctx_create();
27 if (!ctx) {
28 printf("isds_ctx_create() failed");
31 err = isds_set_timeout(ctx, 10000);
32 if (err) {
33 printf("isds_set_timeout() failed: %s\n", isds_strerror(err));
36 err = isds_login(ctx, url, username(), password(), NULL, NULL);
37 if (err) {
38 printf("isds_login() failed: %s: %s\n", isds_strerror(err),
39 isds_long_message(ctx));
40 } else {
41 printf("Logged in :)\n");
46 /* Find some recipients */
47 struct isds_list *boxes = NULL, *item;
48 struct isds_DbOwnerInfo criteria;
49 isds_DbType criteria_db_type = DBTYPE_OVM;
50 memset(&criteria, 0, sizeof(criteria));
51 criteria.firmName = "Místní";
52 criteria.dbType = &criteria_db_type;
54 printf("Searching box with firm name `%s':\n", criteria.firmName);
55 err = isds_FindDataBox(ctx, &criteria, &boxes);
56 if (err == IE_SUCCESS || err == IE_2BIG) {
57 printf("isds_FindDataBox() succeeded:\n");
59 int n;
60 for(item = boxes, n = 1; item; item = item->next, n++) {
61 if (err != IE_2BIG) {
62 printf("List item #%d:\n", n);
63 print_DbOwnerInfo(item->data);
65 if (n == 1) recipient1 = strdup(
66 ((struct isds_DbOwnerInfo *)(item->data))->dbID);
67 if (n == 2) recipient2 = strdup(
68 ((struct isds_DbOwnerInfo *)(item->data))->dbID);
70 if (err == IE_2BIG)
71 printf("isds_FindDataBox() results truncated to %d boxes\n",
72 --n);
73 } else {
74 printf("isds_FindDataBox() failed: %s: %s\n",
75 isds_strerror(err), isds_long_message(ctx));
78 isds_list_free(&boxes);
83 /* Send one message to more recipients */
84 struct isds_message message;
85 memset(&message, 0, sizeof(message));
87 struct isds_envelope envelope;
88 memset(&envelope, 0, sizeof(envelope));
89 message.envelope = &envelope;
90 long int dmSenderOrgUnitNum = 42;
91 envelope.dmSenderOrgUnitNum = &dmSenderOrgUnitNum;
92 envelope.dmAnnotation = "Multiple recipients";
94 struct isds_document minor_document;
95 memset(&minor_document, 0, sizeof(minor_document));
96 minor_document.data = "hello world?";
97 minor_document.data_length = strlen(minor_document.data);
98 minor_document.dmMimeType = "text/plain";
99 minor_document.dmFileMetaType = FILEMETATYPE_ENCLOSURE;
100 minor_document.dmFileDescr = "minor_standard_text.txt";
101 minor_document.dmFileGuid = "2";
102 minor_document.dmUpFileGuid = "1";
104 struct isds_document main_document;
105 memset(&main_document, 0, sizeof(main_document));
106 main_document.data = "Hello World!";
107 main_document.data_length = strlen(main_document.data);
108 main_document.dmMimeType = "text/plain";
109 main_document.dmFileMetaType = FILEMETATYPE_MAIN;
110 main_document.dmFileDescr = "standard_text.txt";
111 main_document.dmFileGuid = "1";
113 struct isds_list documents_main_item = {
114 .data = &main_document,
115 .next = NULL,
116 .destructor = NULL
118 struct isds_list documents_minor_item = {
119 .data = &minor_document,
120 .next = &documents_main_item,
121 .destructor = NULL
123 message.documents = &documents_minor_item;
125 /* Build recipients list */
126 struct isds_list *copies = NULL;
127 copies = calloc(1, sizeof(*copies));
128 copies->destructor = (void (*)(void**)) isds_message_copy_free;
129 copies->data = calloc(1, sizeof(struct isds_message_copy));
130 ((struct isds_message_copy*) copies->data)->dbIDRecipient = recipient1;
132 copies->next = calloc(1, sizeof(*copies->next));
133 copies->next->destructor = (void (*)(void**)) isds_message_copy_free;
134 copies->next->data = calloc(1, sizeof(struct isds_message_copy));
135 ((struct isds_message_copy*)copies->next->data)->dbIDRecipient =
136 recipient2;
139 printf("Sending message to box ID `%s' and box ID `%s'\n",
140 recipient1, recipient2);
141 err = isds_send_message_to_multiple_recipients(ctx, &message, copies);
143 if (err == IE_SUCCESS || err == IE_PARTIAL_SUCCESS) {
144 if (err == IE_SUCCESS){
145 printf("isds_send_message_to_multiple_recipients() succeeded "
146 "cempletely:\n");
148 if (err == IE_PARTIAL_SUCCESS){
149 printf("isds_send_message_to_multiple_recipients() succeeded "
150 "partialy:\n");
152 print_copies(copies);
153 } else
154 printf("isds_send_message_to_multiple_recipients() failed: "
155 "%s: %s\n", isds_strerror(err), isds_long_message(ctx));
157 isds_list_free(&copies);
162 err = isds_logout(ctx);
163 if (err) {
164 printf("isds_logout() failed: %s\n", isds_strerror(err));
168 err = isds_ctx_free(&ctx);
169 if (err) {
170 printf("isds_ctx_free() failed: %s\n", isds_strerror(err));
174 err = isds_cleanup();
175 if (err) {
176 printf("isds_cleanup() failed: %s\n", isds_strerror(err));
179 exit (EXIT_SUCCESS);