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