1 #define _XOPEN_SOURCE 500
11 int main(int argc
, char **argv
) {
12 struct isds_ctx
*ctx
= NULL
;
14 char *recipient1
= NULL
, *recipient2
= NULL
;
16 setlocale(LC_ALL
, "");
20 printf("isds_init() failed: %s\n", isds_strerror(err
));
24 isds_set_logging(ILF_ALL
& ~ILF_HTTP
, ILL_ALL
);
26 ctx
= isds_ctx_create();
28 printf("isds_ctx_create() failed");
31 err
= isds_set_timeout(ctx
, 10000);
33 printf("isds_set_timeout() failed: %s\n", isds_strerror(err
));
36 err
= isds_login(ctx
, url
, username(), password(), NULL
, NULL
);
38 printf("isds_login() failed: %s: %s\n", isds_strerror(err
),
39 isds_long_message(ctx
));
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");
60 for(item
= boxes
, n
= 1; item
; item
= item
->next
, n
++) {
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
);
71 printf("isds_FindDataBox() results truncated to %d boxes\n",
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
,
118 struct isds_list documents_minor_item
= {
119 .data
= &minor_document
,
120 .next
= &documents_main_item
,
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
=
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 "
148 if (err
== IE_PARTIAL_SUCCESS
){
149 printf("isds_send_message_to_multiple_recipients() succeeded "
152 print_copies(copies
);
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
);
164 printf("isds_logout() failed: %s\n", isds_strerror(err
));
168 err
= isds_ctx_free(&ctx
);
170 printf("isds_ctx_free() failed: %s\n", isds_strerror(err
));
174 err
= isds_cleanup();
176 printf("isds_cleanup() failed: %s\n", isds_strerror(err
));