~ubuntu-branches/ubuntu/saucy/sope/saucy

« back to all changes in this revision

Viewing changes to sope-mime/NGMime/NGMimePartGenerator.h

  • Committer: Package Import Robot
  • Author(s): Jeroen Dekkers
  • Date: 2012-05-09 15:39:17 UTC
  • Revision ID: package-import@ubuntu.com-20120509153917-nr4jlm8mktma1yv3
Tags: upstream-1.3.14
ImportĀ upstreamĀ versionĀ 1.3.14

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
  Copyright (C) 2000-2005 SKYRIX Software AG
 
3
 
 
4
  This file is part of SOPE.
 
5
 
 
6
  SOPE is free software; you can redistribute it and/or modify it under
 
7
  the terms of the GNU Lesser General Public License as published by the
 
8
  Free Software Foundation; either version 2, or (at your option) any
 
9
  later version.
 
10
 
 
11
  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
 
12
  WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
13
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
 
14
  License for more details.
 
15
 
 
16
  You should have received a copy of the GNU Lesser General Public
 
17
  License along with SOPE; see the file COPYING.  If not, write to the
 
18
  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
19
  02111-1307, USA.
 
20
*/
 
21
 
 
22
#ifndef __NGMimeGenerator_NGMimePartGenerator_H__
 
23
#define __NGMimeGenerator_NGMimePartGenerator_H__
 
24
 
 
25
#import <Foundation/NSObject.h>
 
26
#import <NGMime/NGPart.h>
 
27
#import <NGMime/NGMimeGeneratorProtocols.h>
 
28
 
 
29
@class NSMutableData, NSData, NSString, NSEnumerator;
 
30
@class NGHashMap, NGMutableHashMap;
 
31
@class NGMimeType, NGMimePartGenerator;
 
32
 
 
33
@interface NGMimePartGenerator : NSObject <NGMimePartGenerator>
 
34
{
 
35
@protected
 
36
  NSMutableData  *result;  // result
 
37
  id<NGMimePart> part;     // for generating
 
38
  id             delegate; // not retained to prevent retain cycles
 
39
 
 
40
  BOOL           useMimeData;
 
41
  
 
42
  void (*appendBytes)(id,SEL,const void*,unsigned int); /* cached method
 
43
                                                           for result */
 
44
  struct {
 
45
    BOOL generatorGenerateDataForHeaderField:1;
 
46
    BOOL generatorGeneratorForBodyOfPart:1;
 
47
    BOOL generatorGenerateDataForBodyOfPart:1;
 
48
  } delegateRespondsTo;
 
49
}
 
50
 
 
51
+ (id)mimePartGenerator;
 
52
 
 
53
/* generating mime from MimeMessage */
 
54
- (NSData *)generateMimeFromPart:(id<NGMimePart>)_part;
 
55
 
 
56
 
 
57
/* generate mime from part and store it in the returned filename */
 
58
- (NSString *)generateMimeFromPartToFile:(id<NGMimePart>)_part;
 
59
 
 
60
/* build data with current mime-header and the _additionalHeaders;
 
61
   _additionalHeaders come from generateBodyData (boundary, encoding, ...) */
 
62
- (NSData *)generateHeaderData:(NGHashMap *)_additionalHeaders;
 
63
 
 
64
/* build the body; use -generatorForBodyOfPart */
 
65
- (NSData *)generateBodyData:(NGMutableHashMap *)_additionalHeaders;
 
66
 
 
67
/* call generateHeaderData and generateBodyData; manage additionalHeaders */
 
68
- (void)generateData;
 
69
 
 
70
/* set result and other stuff */
 
71
- (BOOL)prepareForGenerationOfPart:(id<NGMimePart>)_part;
 
72
 
 
73
/* setting the delegate */
 
74
- (void)setDelegate:(id)_delegate;
 
75
- (id)delegate;
 
76
 
 
77
/* ----- hooks for subclasses ----- */
 
78
 
 
79
/*
 
80
  Generate a prefix and/or a suffix for a part. Can be used to write
 
81
  HTTP response lines before the part.
 
82
*/
 
83
- (BOOL)generatePrefix;
 
84
- (void)generateSuffix;
 
85
 
 
86
/* if no content-type is set */
 
87
- (NGMimeType *)defaultContentTypeForPart:(id<NGMimePart>)_part;
 
88
 
 
89
/* returns header field generator for the specified field */
 
90
- (id<NGMimeHeaderFieldGenerator>)generatorForHeaderField:(NSString *)_name;
 
91
 
 
92
/* build data for the specified header; employ -generatorForHeaderField */
 
93
 
 
94
- (NSData *)generateDataForHeaderField:(NSString *)_headerField
 
95
  value:(id)_value;
 
96
 
 
97
/* build data with the specified header; */
 
98
 
 
99
- (BOOL)isMultiValueCommaHeaderField:(NSString *)_headerField;
 
100
- (BOOL)appendHeaderField:(NSString *)_field values:(NSEnumerator *)_values
 
101
  toData:(NSMutableData *)_data;
 
102
 
 
103
/* looking for a NGMimeBodyGenerator in dependece to the content-type */
 
104
- (id<NGMimeBodyGenerator>)generatorForBodyOfPart:(id<NGMimePart>)_part;
 
105
 
 
106
/* ----- end hooks for subclasses ----- */
 
107
 
 
108
/* accessors */
 
109
- (id<NGMimePart>)part;
 
110
 
 
111
@end
 
112
 
 
113
@interface NSObject(NGMimePartGenerator)
 
114
 
 
115
/*
 
116
  The delegete has the opportunity to generate data for specified
 
117
  header-field with the given enumerator. The classes of the values depends
 
118
  on the _headerField name, normaly they are NSStrings
 
119
*/   
 
120
- (NSData *)mimePartGenerator:(id<NGMimePartGenerator>)_gen
 
121
  generateDataForHeaderField:(NSString *)_headerField
 
122
  value:(NSEnumerator *)_value;
 
123
 
 
124
/*
 
125
  The delegate can choose, which generator should be used, to generate
 
126
  the specified NGMimePart.
 
127
*/
 
128
- (id<NGMimeBodyGenerator>)mimePartGenerator:(id<NGMimePartGenerator>)_gen
 
129
  generatorForBodyOfPart:(id<NGMimePart>)_part;
 
130
 
 
131
/*
 
132
  The delegate has the opportunity to generate the whole body-part. Additional
 
133
  headers like boundary can be set in _additionalHeaders.
 
134
*/
 
135
- (NSData *)mimePartGenerator:(id<NGMimePartGenerator>)_gen
 
136
  generateDataForBodyOfPart:(id<NGMimePart>)_part
 
137
  additionalHeaders:(NGMutableHashMap *)_additionalHeaders;
 
138
 
 
139
/*
 
140
  The delegate can set prefix and suffix for a multipart.
 
141
*/
 
142
- (NSString *)multipartBodyGenerator:(id<NGMimeBodyGenerator>)_bodyGen
 
143
  prefixForPart:(id<NGMimePart>)_part;
 
144
 
 
145
- (NSString *)multipartBodyGenerator:(id<NGMimeBodyGenerator>)_bodyGen
 
146
  suffixForPart:(id<NGMimePart>)_part;
 
147
 
 
148
/*
 
149
  The delegate can select which NGMimeBodyGenerator should de used
 
150
  for generate the given part.
 
151
*/  
 
152
- (id<NGMimePartGenerator>)multipartBodyGenerator:(id<NGMimeBodyGenerator>)
 
153
  generatorForPart:(id<NGMimePart>)_part;
 
154
 
 
155
- (BOOL)useMimeData;
 
156
- (void)setUseMimeData:(BOOL)_b;
 
157
 
 
158
@end
 
159
 
 
160
#endif // __NGMimeGenerator_NGMimePartGenerator_H__