aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/rfc822/MCOMessageBuilder.mm
blob: c122ab148fcdbdd2d7cab29dda64b1f01b9e2e8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//
//  MCOMessageBuilder.m
//  mailcore2
//
//  Created by DINH Viêt Hoà on 3/22/13.
//  Copyright (c) 2013 MailCore. All rights reserved.
//

#import "MCOMessageBuilder.h"

#include "MCRFC822.h"

#import "MCOUtils.h"
#import "MCOAbstractMessage+Private.h"
#import "MCOAbstractMessageRendererCallback.h"

@implementation MCOMessageBuilder

#define nativeType mailcore::MessageBuilder

+ (void) load
{
    MCORegisterClass(self, &typeid(nativeType));
}

- (id)init
{
    mailcore::MessageBuilder * message = new mailcore::MessageBuilder();
    self = [super initWithMCMessage:message];
    MC_SAFE_RELEASE(message);
    return self;
}

- (id) copyWithZone:(NSZone *)zone
{
    nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy();
    id result = [[self class] mco_objectWithMCObject:nativeObject];
    MC_SAFE_RELEASE(nativeObject);
    return [result retain];
}

+ (id) mco_objectWithMCObject:(mailcore::Object *)object
{
    mailcore::MessageBuilder * msg = (mailcore::MessageBuilder *) object;
    return [[[self alloc] initWithMCMessage:msg] autorelease];
}

MCO_OBJC_SYNTHESIZE_STRING(setHTMLBody, htmlBody)
MCO_OBJC_SYNTHESIZE_STRING(setTextBody, textBody)
MCO_OBJC_SYNTHESIZE_ARRAY(setAttachments, attachments)
MCO_OBJC_SYNTHESIZE_ARRAY(setRelatedAttachments, relatedAttachments)
MCO_OBJC_SYNTHESIZE_STRING(setBoundaryPrefix, boundaryPrefix)

- (void) addAttachment:(MCOAttachment *)attachment
{
    MCO_NATIVE_INSTANCE->addAttachment(MCO_FROM_OBJC(mailcore::Attachment, attachment));
}

- (void) addRelatedAttachment:(MCOAttachment *)attachment
{
    MCO_NATIVE_INSTANCE->addRelatedAttachment(MCO_FROM_OBJC(mailcore::Attachment, attachment));
}

- (NSData *) data
{
    return MCO_OBJC_BRIDGE_GET(data);
}

- (NSData *) dataForEncryption
{
    return MCO_OBJC_BRIDGE_GET(dataForEncryption);
}

- (NSString *) htmlRenderingWithDelegate:(id <MCOHTMLRendererDelegate>)delegate
{
    MCOAbstractMessageRendererCallback * htmlRenderCallback = new MCOAbstractMessageRendererCallback(self, delegate, NULL);
    NSString * result = MCO_TO_OBJC(MCO_NATIVE_INSTANCE->htmlRendering(htmlRenderCallback));
    htmlRenderCallback->release();
    
    return result;
}

- (NSString *) htmlBodyRendering
{
    return MCO_OBJC_BRIDGE_GET(htmlBodyRendering);
}

- (NSString *) plainTextRendering
{
    return MCO_OBJC_BRIDGE_GET(plainTextRendering);
}

- (NSString *) plainTextBodyRendering
{
    return [self plainTextBodyRenderingAndStripWhitespace:YES];
}

- (NSString *) plainTextBodyRenderingAndStripWhitespace:(BOOL)stripWhitespace
{
    return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->plainTextBodyRendering(stripWhitespace));
}

- (NSData *) openPGPSignedMessageDataWithSignatureData:(NSData *)signature
{
    return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->openPGPSignedMessageDataWithSignatureData(MCO_FROM_OBJC(mailcore::Data, signature)));
}

- (NSData *) openPGPEncryptedMessageDataWithEncryptedData:(NSData *)encryptedData
{
    return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->openPGPEncryptedMessageDataWithEncryptedData(MCO_FROM_OBJC(mailcore::Data, encryptedData)));
}

@end