1 #define _XOPEN_SOURCE 500
11 int main(int argc
, char **argv
) {
12 struct isds_ctx
*ctx
= NULL
;
14 struct isds_DbOwnerInfo
*db_owner_info
= NULL
;
15 char *recipient
= NULL
;
17 setlocale(LC_ALL
, "");
21 printf("isds_init() failed: %s\n", isds_strerror(err
));
25 isds_set_logging(ILF_ALL
& ~ILF_HTTP
, ILL_ALL
);
27 ctx
= isds_ctx_create();
29 printf("isds_ctx_create() failed");
32 err
= isds_set_timeout(ctx
, 10000);
34 printf("isds_set_timeout() failed: %s\n", isds_strerror(err
));
37 err
= isds_login(ctx
, url
, username(), password(), NULL
, NULL
);
39 printf("isds_login() failed: %s: %s\n", isds_strerror(err
),
40 isds_long_message(ctx
));
42 printf("Logged in :)\n");
47 printf("isds_ping() failed: %s\n", isds_strerror(err
));
49 printf("isds_ping() succeeded\n");
52 printf("Sending bogus request\n");
53 err
= isds_bogus_request(ctx
);
55 printf("isds_bogus_request() failed: %s: %s\n", isds_strerror(err
),
56 isds_long_message(ctx
));
58 printf("isds_bogus_request() succeeded\n");
62 printf("Getting info about my box:\n");
63 err
= isds_GetOwnerInfoFromLogin(ctx
, &db_owner_info
);
65 printf("isds_GetOwnerInfoFromLogin() failed: %s: %s\n",
66 isds_strerror(err
), isds_long_message(ctx
));
68 printf("isds_GetOwnerInfoFromLogin() succeeded\n");
70 print_DbOwnerInfo(db_owner_info
);
75 /* Current server implementation (2009-11-17) does not allow to find
76 * myself. Previous version allowed it. */
77 struct isds_list
*boxes
= NULL
, *item
;
79 printf("Searching for my own box:\n");
80 err
= isds_FindDataBox(ctx
, db_owner_info
, &boxes
);
81 if (err
== IE_SUCCESS
|| err
== IE_2BIG
) {
83 printf("isds_FindDataBox() results truncated\n");
84 printf("isds_FindDataBox() succeeded:\n");
86 for(item
= boxes
; item
; item
= item
->next
) {
87 printf("List item:\n");
88 print_DbOwnerInfo(item
->data
);
91 printf("isds_FindDataBox() failed: %s: %s\n",
92 isds_strerror(err
), isds_long_message(ctx
));
95 isds_list_free(&boxes
);
99 struct isds_list
*boxes
= NULL
, *item
;
100 struct isds_DbOwnerInfo
*criteria
= calloc(1, sizeof(*criteria
));
102 printf("Not enough memory for struct isds_DbOwnerInfo criteria\n");
105 criteria
->firmName
= strdup("Obec");
106 if (!criteria
->firmName
) {
107 printf("Not enough memory for criteria->firmName\n");
110 criteria
->dbType
= malloc(sizeof(*(criteria
->dbType
)));
111 if (!criteria
->dbType
) {
112 printf("Not enough memory for criteria->dbType\n");
115 *(criteria
->dbType
) = DBTYPE_OVM
;
117 printf("Searching box with firm name `%s':\n", criteria
->firmName
);
118 err
= isds_FindDataBox(ctx
, criteria
, &boxes
);
119 if (err
== IE_SUCCESS
|| err
== IE_2BIG
) {
120 printf("isds_FindDataBox() succeeded:\n");
123 for(item
= boxes
, n
= 1; item
; item
= item
->next
, n
++) {
124 if (err
!= IE_2BIG
) {
125 printf("List item #%d:\n", n
);
126 print_DbOwnerInfo(item
->data
);
130 printf("isds_FindDataBox() results truncated to %d boxes\n",
133 printf("isds_FindDataBox() failed: %s: %s\n",
134 isds_strerror(err
), isds_long_message(ctx
));
137 isds_list_free(&boxes
);
138 isds_DbOwnerInfo_free(&criteria
);
142 struct isds_list
*boxes
= NULL
, *item
;
143 struct isds_DbOwnerInfo criteria
;
144 isds_DbType criteria_db_type
= DBTYPE_OVM
;
145 memset(&criteria
, 0, sizeof(criteria
));
146 criteria
.dbType
= &criteria_db_type
;
147 criteria
.dbID
= "vqbab52";
149 printf("Searching for exact box by ID `%s' and type:\n", criteria
.dbID
);
150 err
= isds_FindDataBox(ctx
, &criteria
, &boxes
);
151 if (err
== IE_SUCCESS
|| err
== IE_2BIG
) {
152 printf("isds_FindDataBox() succeeded:\n");
155 for(item
= boxes
, n
= 1; item
; item
= item
->next
, n
++) {
156 if (err
!= IE_2BIG
) {
157 printf("List item #%d:\n", n
);
158 print_DbOwnerInfo(item
->data
);
160 if (n
== 1) recipient
= strdup(
161 ((struct isds_DbOwnerInfo
*)(item
->data
))->dbID
);
164 printf("isds_FindDataBox() results truncated to %d boxes\n",
167 printf("isds_FindDataBox() failed: %s: %s\n",
168 isds_strerror(err
), isds_long_message(ctx
));
171 isds_list_free(&boxes
);
176 struct isds_list
*boxes
= NULL
, *item
;
177 struct isds_DbOwnerInfo criteria
;
178 isds_DbType criteria_db_type
= DBTYPE_OVM
;
179 memset(&criteria
, 0, sizeof(criteria
));
180 criteria
.firmName
= "Místní";
181 criteria
.dbType
= &criteria_db_type
;
183 printf("Searching box with firm name `%s':\n", criteria
.firmName
);
184 err
= isds_FindDataBox(ctx
, &criteria
, &boxes
);
185 if (err
== IE_SUCCESS
|| err
== IE_2BIG
) {
186 printf("isds_FindDataBox() succeeded:\n");
189 for(item
= boxes
, n
= 1; item
; item
= item
->next
, n
++) {
190 if (err
!= IE_2BIG
) {
191 printf("List item #%d:\n", n
);
192 print_DbOwnerInfo(item
->data
);
194 if (n
== 1) recipient
= strdup(
195 ((struct isds_DbOwnerInfo
*)(item
->data
))->dbID
);
198 printf("isds_FindDataBox() results truncated to %d boxes\n",
201 printf("isds_FindDataBox() failed: %s: %s\n",
202 isds_strerror(err
), isds_long_message(ctx
));
205 isds_list_free(&boxes
);
210 long int box_status
= 0;
211 printf("Getting status of my box with ID `%s'\n", db_owner_info
->dbID
);
212 err
= isds_CheckDataBox(ctx
, db_owner_info
->dbID
, &box_status
);
214 printf("isds_CheckDataBox() failed: %s: %s\n",
215 isds_strerror(err
), isds_long_message(ctx
));
217 printf("isds_CheckDataBox() succeeded: status = ");
218 print_DbState(box_status
);
222 isds_DbOwnerInfo_free(&db_owner_info
);
225 char *box_id
= "7777777";
226 long int box_status
= 0;
227 printf("Getting status of non existing box with ID `%s'\n", box_id
);
228 err
= isds_CheckDataBox(ctx
, box_id
, &box_status
);
230 printf("isds_CheckDataBox() failed: %s: %s\n",
231 isds_strerror(err
), isds_long_message(ctx
));
233 printf("isds_CheckDataBox() succeeded: status = ");
234 print_DbState(box_status
);
241 struct isds_message message
;
242 memset(&message
, 0, sizeof(message
));
244 struct isds_envelope envelope
;
245 memset(&envelope
, 0, sizeof(envelope
));
246 message
.envelope
= &envelope
;
247 envelope
.dbIDRecipient
= recipient
;
248 long int dmSenderOrgUnitNum
= 42;
249 envelope
.dmSenderOrgUnitNum
= &dmSenderOrgUnitNum
;
250 envelope
.dmAnnotation
= "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
251 /* "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
252 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
253 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
254 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
255 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
256 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
257 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
258 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
259 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
260 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
261 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
262 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
263 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
264 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
265 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
266 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
267 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
268 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
269 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"*/
270 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
272 struct isds_document minor_document
;
273 memset(&minor_document
, 0, sizeof(minor_document
));
274 minor_document
.data
= "hello world?";
275 minor_document
.data_length
= strlen(minor_document
.data
);
276 minor_document
.dmMimeType
= "text/plain";
277 /* XXX: This should fail
278 minor_document.dmFileMetaType = FILEMETATYPE_MAIN; */
279 minor_document
.dmFileMetaType
= FILEMETATYPE_ENCLOSURE
;
280 /* Server implementation demands dmFileDescr to be valid file name */
281 /*minor_document.dmFileDescr = "Standard text.txt";*/
282 minor_document
.dmFileDescr
= "minor_standard_text.txt";
283 minor_document
.dmFileGuid
= "2";
284 minor_document
.dmUpFileGuid
= "1";
286 struct isds_document main_document
;
287 memset(&main_document
, 0, sizeof(main_document
));
288 main_document
.data
= "Hello World!";
289 main_document
.data_length
= strlen(main_document
.data
);
290 /* Server implementation sais text is not text file
291 * See <http://www.abclinuxu.cz/forum/show/284940> */
292 main_document
.dmMimeType
= "text/plain";
293 /* XXX: This should fail */
294 /*main_document.dmFileMetaType = FILEMETATYPE_ENCLOSURE;*/
295 main_document
.dmFileMetaType
= FILEMETATYPE_MAIN
;
296 /* Server implementation demands dmFileDescr to be valid file name */
297 /*main_document.dmFileDescr = "Standard text.txt";*/
298 main_document
.dmFileDescr
= "standard_text.txt";
299 main_document
.dmFileGuid
= "1";
301 struct isds_list documents_main_item
= {
302 .data
= &main_document
,
306 struct isds_list documents_minor_item
= {
307 .data
= &minor_document
,
308 .next
= &documents_main_item
,
311 message
.documents
= &documents_minor_item
;
314 printf("Sending message to box ID `%s'\n",
315 message
.envelope
->dbIDRecipient
);
316 err
= isds_send_message(ctx
, &message
);
318 printf("isds_send_message() failed: %s: %s\n",
319 isds_strerror(err
), isds_long_message(ctx
));
321 printf("isds_send_message() succeeded: assigned message ID = %s\n",
322 message
.envelope
->dmID
);
325 free(message
.envelope
->dmID
);
330 err
= isds_logout(ctx
);
332 printf("isds_logout() failed: %s\n", isds_strerror(err
));
335 printf("Ping after logout should fail\n");
336 err
= isds_ping(ctx
);
338 printf("isds_ping() failed: %s\n", isds_strerror(err
));
340 printf("isds_ping() succeeded\n");
343 printf("Sending bogus request after logout\n");
344 err
= isds_bogus_request(ctx
);
346 printf("isds_bogus_request() failed: %s: %s\n", isds_strerror(err
),
347 isds_long_message(ctx
));
349 printf("isds_bogus_request() succeeded\n");
352 err
= isds_ctx_free(&ctx
);
354 printf("isds_ctx_free() failed: %s\n", isds_strerror(err
));
358 err
= isds_cleanup();
360 printf("isds_cleanup() failed: %s\n", isds_strerror(err
));