/* * Copyright 2008-2010 Arsen Chaloyan * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Id: multipart_suite.c 1673 2010-04-28 20:45:47Z achaloyan $ */ #include "apt_test_suite.h" #include "apt_multipart_content.h" #include "apt_log.h" static apt_str_t* multipart_content_generate(apt_test_suite_t *suite) { apt_multipart_content_t *multipart = apt_multipart_content_create(1500,NULL,suite->pool); apt_str_t content_type; apt_str_t content; apt_str_t *body; apt_string_set(&content_type,"text/plain"); apt_string_set(&content,"This is the content of the first part"); apt_multipart_content_add2(multipart,&content_type,NULL,&content); apt_string_set(&content_type,"application/ssml+xml"); apt_string_set(&content, "\r\n" " You have 4 new messages.

\r\n" "
"); apt_multipart_content_add2(multipart,&content_type,NULL,&content); body = apt_multipart_content_finalize(multipart); if(body) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Genereted Multipart Content [%lu bytes]\n%s", body->length, body->buf); } return body; } static apt_bool_t multipart_content_parse(apt_test_suite_t *suite, apt_str_t *body) { apt_multipart_content_t *multipart = apt_multipart_content_assign(body,NULL,suite->pool); if(multipart) { apt_bool_t is_final; apt_content_part_t content_part; while(apt_multipart_content_get(multipart,&content_part,&is_final) == TRUE) { if(is_final == TRUE) { break; } if(content_part.type && apt_string_is_empty(content_part.type) == FALSE) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Content Part Type: %.*s", content_part.type->length, content_part.type->buf); } if(content_part.id && apt_string_is_empty(content_part.id) == FALSE) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Content Part Id: %.*s", content_part.id->length, content_part.id->buf); } if(content_part.length && apt_string_is_empty(content_part.length) == FALSE) { apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Content Part Length: %.*s\n%.*s", content_part.length->length, content_part.length->buf, content_part.body.length, content_part.body.buf); } } } return TRUE; } static apt_bool_t multipart_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) { apt_bool_t status = FALSE; apt_str_t *body = multipart_content_generate(suite); if(body) { status = multipart_content_parse(suite,body); } return status; } apt_test_suite_t* multipart_test_suite_create(apr_pool_t *pool) { apt_test_suite_t *suite = apt_test_suite_create(pool,"multipart",NULL,multipart_test_run); return suite; }