From f4154b7d317b55dab5980e0fb4d725e2e6af8b22 Mon Sep 17 00:00:00 2001 From: snowdrop Date: Fri, 15 Oct 2004 13:30:42 +0000 Subject: initial import --- libcsoap/soap-ctx.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++ libcsoap/soap-ctx.h | 48 +++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100755 libcsoap/soap-ctx.c create mode 100755 libcsoap/soap-ctx.h (limited to 'libcsoap') diff --git a/libcsoap/soap-ctx.c b/libcsoap/soap-ctx.c new file mode 100755 index 0000000..a77bbdd --- /dev/null +++ b/libcsoap/soap-ctx.c @@ -0,0 +1,89 @@ +/****************************************************************** + * $Id: soap-ctx.c,v 1.1 2004/10/15 13:33:48 snowdrop Exp $ + * + * CSOAP Project: A SOAP client/server library in C + * Copyright (C) 2003-2004 Ferhat Ayaz + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Email: ferhatayaz@jprogrammer.net + ******************************************************************/ +#include + + +SoapCtx* soap_ctx_new(SoapEnv *env) /* should only be used internally */ +{ + SoapCtx* ctx = (SoapCtx*)malloc(sizeof(SoapCtx)); + ctx->env = env; + ctx->attachments = NULL; + + return ctx; +} + + +void soap_ctx_add_files(SoapCtx* ctx, attachments_t *attachments) +{ + part_t *part; + char href[MAX_HREF_SIZE]; + + if (attachments==NULL) return; + + part = attachments->parts; + while (part) { + soap_ctx_add_file(ctx, part->filename, part->content_type, href); + part = part->next; + } +} + + +hstatus_t soap_ctx_add_file(SoapCtx* ctx, const char* filename, const char* content_type, char *dest_href) +{ + char cid[250]; + char id[250]; + part_t *part; + static int counter = 1; + FILE *test = fopen(filename, "r"); + if (!test) return FILE_ERROR_OPEN; + + fclose(test); + + /* generate an id */ + sprintf(id, "005512345894583%d", counter++); + sprintf(dest_href, "cid:%s", id); + sprintf(cid, "<%s>", id); + + /* add part to context */ + part = part_new(cid, filename, content_type, NULL, NULL); + if (!ctx->attachments) ctx->attachments = attachments_new(); + attachments_add_part(ctx->attachments, part); + + return H_OK; +} + + +void soap_ctx_free(SoapCtx* ctx) +{ + if (!ctx) return; + + if (ctx->attachments) + attachments_free(ctx->attachments); + if (ctx->env) + soap_env_free(ctx->env); + + free(ctx); +} + + diff --git a/libcsoap/soap-ctx.h b/libcsoap/soap-ctx.h new file mode 100755 index 0000000..c32f372 --- /dev/null +++ b/libcsoap/soap-ctx.h @@ -0,0 +1,48 @@ +/****************************************************************** + * $Id: soap-ctx.h,v 1.1 2004/10/15 13:33:48 snowdrop Exp $ + * + * CSOAP Project: A SOAP client/server library in C + * Copyright (C) 2003-2004 Ferhat Ayaz + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Email: ferhatayaz@jprogrammer.net + ******************************************************************/ +#ifndef cSOAP_CTX_H +#define cSOAP_CTX_H + + +#include +#include + +#define MAX_HREF_SIZE 150 + +typedef struct _SoapCtx +{ + SoapEnv *env; + attachments_t *attachments; +}SoapCtx; + + +SoapCtx* soap_ctx_new(SoapEnv *env); /* should only be used internally */ + +/* Size of destination dest_href should be MAX_HREF_SIZE */ +hstatus_t soap_ctx_add_file(SoapCtx* ctx, const char* filename, const char* content_type, char *dest_href); +void soap_ctx_add_files(SoapCtx* ctx, attachments_t *attachments); +void soap_ctx_free(SoapCtx* ctx); + +#endif + -- cgit v1.1-32-gdbae