MCPcopy Create free account
hub / github.com/MailCore/mailcore2 / attachmentWithSingleMIME

Method attachmentWithSingleMIME

src/core/rfc822/MCAttachment.cpp:523–613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

521}
522
523Attachment * Attachment::attachmentWithSingleMIME(struct mailmime * mime)
524{
525 struct mailmime_data * data;
526 const char * bytes;
527 size_t length;
528 Attachment * result;
529 struct mailmime_single_fields single_fields;
530 char * str;
531 char * name;
532 char * filename;
533 char * content_id;
534 char * description;
535 char * loc;
536 Encoding encoding;
537 clist * ct_parameters;
538
539 MCAssert(mime->mm_type == MAILMIME_SINGLE);
540
541 result = new Attachment();
542 result->setUniqueID(mailcore::String::uuidString());
543
544 data = mime->mm_data.mm_single;
545 bytes = data->dt_data.dt_text.dt_data;
546 length = data->dt_data.dt_text.dt_length;
547
548 mailmime_single_fields_init(&single_fields, mime->mm_mime_fields, mime->mm_content_type);
549
550 encoding = encodingForMIMEEncoding(single_fields.fld_encoding, data->dt_encoding);
551
552 Data * mimeData;
553 mimeData = Data::dataWithBytes(bytes, (unsigned int) length);
554 mimeData = mimeData->decodedDataUsingEncoding(encoding);
555 result->setData(mimeData);
556
557 str = get_content_type_str(mime->mm_content_type);
558 result->setMimeType(String::stringWithUTF8Characters(str));
559 free(str);
560
561 name = single_fields.fld_content_name;
562 filename = single_fields.fld_disposition_filename;
563 content_id = single_fields.fld_id;
564 description = single_fields.fld_description;
565 loc = single_fields.fld_location;
566 ct_parameters = single_fields.fld_content->ct_parameters;
567
568 if (filename != NULL) {
569 result->setFilename(String::stringByDecodingMIMEHeaderValue(filename));
570 }
571 else if (name != NULL) {
572 result->setFilename(String::stringByDecodingMIMEHeaderValue(name));
573 }
574 if (content_id != NULL) {
575 result->setContentID(String::stringWithUTF8Characters(content_id));
576 }
577 if (description != NULL) {
578 result->setContentDescription(String::stringWithUTF8Characters(description));
579 }
580 if (single_fields.fld_content_charset != NULL) {

Callers

nothing calls this directly

Calls 14

get_content_type_strFunction · 0.85
setAttachmentMethod · 0.80
setUniqueIDMethod · 0.45
setDataMethod · 0.45
setMimeTypeMethod · 0.45
setFilenameMethod · 0.45
setContentIDMethod · 0.45
setContentDescriptionMethod · 0.45
setCharsetMethod · 0.45
setContentLocationMethod · 0.45

Tested by

no test coverage detected