From 542964b5d6e9b3ce04cdae97467626342e07abd9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petr=20P=C3=ADsa=C5=99?= Date: Sun, 27 Jun 2010 23:00:55 +0200 Subject: [PATCH] client: Add loadsentmessagewithxmldocuments This code dumps example message with XML documents. Seems like text nodes emerged during message composition (probably by pretty indentation on SOAP serialiazation). --- client/Makefile.am | 7 ++- client/loadsentmessagewithxmldocuments.c | 90 ++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 client/loadsentmessagewithxmldocuments.c diff --git a/client/Makefile.am b/client/Makefile.am index 5f6472a..b214d73 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -7,8 +7,9 @@ noinst_PROGRAMS = isdsclient login certauth version progressbar logger \ getuserboxinfo addbox changebox \ changepassword resetpassword deleteuser changeuser \ switchcommercial switchaccessibility disableaccesibilityexternaly \ - sendmultiple sendxmldoc getsent getsignedsent getsignedsentbyid \ + sendmultiple getsent getsignedsent getsignedsentbyid \ loadreceivedmessage loadcmssignedsentmessage \ + sendxmldoc loadsentmessagewithxmldocuments \ getreceived getsignedreceived \ getreceivedenvelope markasread markasreceived \ downloadmessagehash verifyreceivedhash computemessagehash \ @@ -35,12 +36,14 @@ switchcommercial_SOURCES = switchcommercial.c $(common) switchaccessibility_SOURCES = switchaccessibility.c $(common) disableaccesibilityexternaly_SOURCES = disableaccesibilityexternaly.c $(common) sendmultiple_SOURCES = sendmultiple.c $(common) -sendxmldoc_SOURCES = sendxmldoc.c $(common) getsent_SOURCES = getsent.c $(common) getsignedsent_SOURCES = getsignedsent.c $(common) getsignedsentbyid_SOURCES = getsignedsentbyid.c $(common) loadreceivedmessage_SOURCES = loadreceivedmessage.c $(common) loadcmssignedsentmessage_SOURCES = loadcmssignedsentmessage.c $(common) +sendxmldoc_SOURCES = sendxmldoc.c $(common) +loadsentmessagewithxmldocuments_SOURCES = \ + loadsentmessagewithxmldocuments.c $(common) getreceived_SOURCES = getreceived.c $(common) getsignedreceived_SOURCES = getsignedreceived.c $(common) getreceivedenvelope_SOURCES = getreceivedenvelope.c $(common) diff --git a/client/loadsentmessagewithxmldocuments.c b/client/loadsentmessagewithxmldocuments.c new file mode 100644 index 0000000..2ceb345 --- /dev/null +++ b/client/loadsentmessagewithxmldocuments.c @@ -0,0 +1,90 @@ +#define _XOPEN_SOURCE 500 +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + + +int main(int argc, char **argv) { + struct isds_ctx *ctx = NULL; + isds_error err; + + setlocale(LC_ALL, ""); + + err = isds_init(); + if (err) { + printf("isds_init() failed: %s\n", isds_strerror(err)); + exit(EXIT_FAILURE); + } + + isds_set_logging(ILF_ALL & ~ILF_HTTP, ILL_ALL); + + ctx = isds_ctx_create(); + if (!ctx) { + printf("isds_ctx_create() failed"); + } + + + { + /* Load plain signed sent message with XML documents */ + struct isds_message *message = NULL; + void *buffer; + int fd; + size_t length; + + if (mmap_file(SRCDIR + "/server/messages/signed_sent_xml_message-373002.xml", + &fd, &buffer, &length)) { + fprintf(stderr, "Could not map file with message"); + isds_ctx_free(&ctx); + isds_cleanup(); + exit(EXIT_FAILURE); + } + + printf("Loading plain signed sent message\n"); + err = isds_load_message(ctx, RAWTYPE_PLAIN_SIGNED_OUTGOING_MESSAGE, + buffer, length, &message, BUFFER_DONT_STORE); + if (err) + printf("isds_load_message() failed: %s: %s\n", + isds_strerror(err), isds_long_message(ctx)); + else { + printf("isds_load_message() succeeded:\n"); + print_message(message); + + /* Dump XML documents */ + int i = 1; + for (struct isds_list *item = message->documents; item; + item = item->next, i++) { + if (item->data) { + struct isds_document *document = + (struct isds_document *)item->data; + if (document->is_xml) { + printf("* XML Document #%d dump:\n", i); + xmlDebugDumpNodeList(stdout, + document->xml_node_list, 2); + } + } + } + } + + isds_message_free(&message); + munmap_file(fd, buffer, length); + } + + + err = isds_ctx_free(&ctx); + if (err) { + printf("isds_ctx_free() failed: %s\n", isds_strerror(err)); + } + + err = isds_cleanup(); + if (err) { + printf("isds_cleanup() failed: %s\n", isds_strerror(err)); + } + + exit (EXIT_SUCCESS); +} -- 2.11.4.GIT