]> err.no Git - sope/blob - sope-mime/NGMime/NGMimeHeaderFieldParser.h
new Xcode project
[sope] / sope-mime / NGMime / NGMimeHeaderFieldParser.h
1 /*
2   Copyright (C) 2000-2004 SKYRIX Software AG
3
4   This file is part of OpenGroupware.org.
5
6   OGo 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   OGo 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 OGo; 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 // $Id$
22
23 #ifndef __NGMime_NGHeaderFieldParser_H__
24 #define __NGMime_NGHeaderFieldParser_H__
25
26 #import <Foundation/NSObject.h>
27
28 @class NSData, NSString, NSMutableDictionary;
29
30 @protocol NGMimeHeaderFieldParser < NSObject >
31
32 - (id)parseValue:(id)_data ofHeaderField:(NSString *)_field;
33
34 @end
35
36 @interface NGMimeHeaderFieldParser : NSObject < NGMimeHeaderFieldParser >
37
38 + (BOOL)isMIMELogEnabled;
39 + (BOOL)doesStripLeadingSpaces;
40
41 - (NSString *)removeCommentsFromValue:(NSString *)_rawValue;
42 - (id)parseValue:(id)_data ofHeaderField:(NSString *)_field; // abstract
43
44 @end
45
46 @interface NGMimeContentTypeHeaderFieldParser : NGMimeHeaderFieldParser
47 @end
48
49 @interface NGMimeRFC822DateHeaderFieldParser : NGMimeHeaderFieldParser
50 @end
51
52 @interface NGMimeContentLengthHeaderFieldParser : NGMimeHeaderFieldParser
53 @end
54
55 /*
56   Content-Disposition headers have the form:
57
58     disposition := "Content-Disposition" ":"
59                    disposition-type
60                    *(";" disposition-parm)
61
62     disposition-type := "inline"
63                       / "attachment"
64                       / extension-token
65                       ; values are not case-sensitive
66
67     disposition-parm := filename-parm / parameter
68     filename-parm := "filename" "=" value;
69
70   Content-Disposition values may not contain comments !
71 */
72 @interface NGMimeContentDispositionHeaderFieldParser : NGMimeHeaderFieldParser
73 @end
74
75 /*
76   This strips spaces at the beginning and the end of the value, then it removes
77   all comments
78 */
79 @interface NGMimeStringHeaderFieldParser : NGMimeHeaderFieldParser
80 {
81 @protected
82   BOOL removeComments; // default=YES
83 }
84
85 - (id)initWithRemoveComments:(BOOL)_flag;
86 - (id)init;
87
88 - (id)parseValue:(id)_data ofHeaderField:(NSString *)_field;
89
90 @end
91
92 /*
93   This stores a mapping between header field parsers and field names.
94 */
95 @interface NGMimeHeaderFieldParserSet : NSObject <NGMimeHeaderFieldParser,NSCopying>
96 {
97 @protected
98   NSMutableDictionary         *fieldNameToParser;
99   id<NGMimeHeaderFieldParser> defaultParser;
100 }
101
102 + (id)headerFieldParserSet;
103 + (id)defaultRfc822HeaderFieldParserSet;
104 - (id)init;
105 - (id)initWithDefaultParser:(id<NGMimeHeaderFieldParser>)_parser;
106 - (id)initWithParseSet:(NGMimeHeaderFieldParserSet *)_set;
107
108 /* accessors */
109
110 - (void)setParser:(id<NGMimeHeaderFieldParser>)_parser
111   forField:(NSString *)_name;
112
113 - (void)setDefaultParser:(id<NGMimeHeaderFieldParser>)_parser;
114 - (id<NGMimeHeaderFieldParser>)defaultParser;
115
116 /* operation */
117
118 - (id)parseValue:(id)_data ofHeaderField:(NSString *)_field;
119
120 @end
121
122 #endif /* __NGMime_NGHeaderFieldParser_H__ */