/[suikacvs]/messaging/manakai/lib/Message/Header/HTTP.pm
Suika

Contents of /messaging/manakai/lib/Message/Header/HTTP.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (show annotations) (download)
Mon Aug 5 09:40:54 2002 UTC (22 years, 3 months ago) by wakaba
Branch: MAIN
CVS Tags: before-dis2-200411, manakai-release-0-3-2, manakai-release-0-3-1, manakai-release-0-4-0, manakai-200612, msg-0-1, HEAD
Branch point for: branch-suikawiki-1, experimental-xml-parser-200401, stable
Changes since 1.6: +94 -24 lines
2002-08-05  Wakaba <w@suika.fam.cx>

	* Util.pm:
	- (sprintxf): Use Message::Util::Wide::unquote_if_quoted_string
	instead of Message::Util::unquote_if_quoted_string.
	- (Message::Util::Wide): New package.
	- (%Message::Util::Wide::REG): New hash.
	- (Message::Util::unquote_if_quoted_string): New function.
	- NOTE: "Wide" package is created to support utf8 string
	of perl 5.7.3 or later.  Utf8 string does not work
	only for [\x00-\xFF] regex of current functions,
	and this regex is used as (?:.|\x0D|\x0A).  (Without
	's' option, "." does not match with newline character.)
	When we can do away problematic code from all
	Message::* modules, we can also do away "Wide" package.

1
2 =head1 NAME
3
4 Message::Header::RFC822 --- Internet Messages -- Definition
5 for RFC822 Namespaces of Header Fields
6
7 =cut
8
9 require Message::Header::Default;
10 package Message::Header::HTTP;
11 use strict;
12 use vars qw($VERSION);
13 $VERSION=do{my @r=(q$Revision: 1.6 $=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};
14
15 our %OPTION = %Message::Header::Default::OPTION;
16 $OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:http';
17 $OPTION{namespace_phname} = 'x-http';
18 $OPTION{namespace_phname_goodcase} = 'X-HTTP';
19
20 $OPTION{case_sensible} = 0;
21 $OPTION{to_be_goodcase} = \&Message::Header::Default::_goodcase;
22
23 $OPTION{field_sort} = {qw/alphabetic 1 good-practice 1/};
24 $OPTION{field_sort_good_practice_order} = {};
25 {
26 my $i = 1;
27 for (
28 qw/status x-cgi-/, ## CGI header
29 qw/man c-man opt c-opt ext c-ext
30 cache-control connection date pragma transfer-encoding upgrade trailer via
31 keep-alive/, ## General-Headers
32 qw/accept accept-charset accept-encoding accept-language
33 authorization expect from host
34 if-modified-since if-match if-none-match if-range if-unmodified-since
35 max-forwards proxy-authorization range referer te user-agent/, ## Request-Headers
36 qw/accept-ranges age location proxy-authenticate retry-after server vary
37 warning www-authenticate alternates/, ## Response-Headers
38 qw/allow etag expires last-modified base link window-target
39 derived-from mime-version content-/, ## Entity-Headers
40 ) {
41 $OPTION{field_sort_good_practice_order}->{$_} = $i++;
42 }
43 }
44
45 $OPTION{goodcase} = {
46 'pics-label' => 'PICS-Label',
47 'message-id' => 'Message-ID',
48 'mime-version' => 'MIME-Version',
49 uri => 'URI',
50 };
51
52 $OPTION{value_type} = {
53 ':default' => ['Message::Field::Unstructured'],
54 status => ['Message::Field::Status'],
55
56 ## HTTP-Date / delta-econd
57 age => ['Message::Field::Date'], ## ds
58 date => ['Message::Field::Date'], ## hd
59 expires => ['Message::Field::Date'], ## hd / ds
60 'if-modified-since' => ['Message::Field::Date'],
61 'if-unmodified-since' => ['Message::Field::Date'],
62 'last-modified' => ['Message::Field::Date'], ## hd
63
64 p3p => ['Message::Field::Params'],
65 refresh => ['Message::Field::ValueParams'],
66 'window-target' => ['Message::Field::ValueParams'],
67 'mime-version' => ['Message::Field::Numval'],
68 from => ['Message::Field::Addresses'],
69 host => ['Message::Field::Domain',{
70 -format_ipv4 => '%vd',
71 -format_ipv6 => '[%s]',
72 -output_port => 1,
73 -use_comment => 0,
74 -use_port => 1,
75 }],
76
77 ## product
78 server => ['Message::Field::UA'],
79 'user-agent' => ['Message::Field::UA'],
80
81 ## Comma Separated List
82 accept => ['Message::Field::CSV',{
83 -is_quoted_string => 0,
84 -use_comment => 0,
85 -value_type => {'*default' => ['Message::Field::ValueParams']},
86 }],
87 'accept-charset' => ['Message::Field::CSV',{
88 -is_quoted_string => 0,
89 -use_comment => 0,
90 -value_type => {'*default' => ['Message::Field::ValueParams']},
91 }],
92 'accept-encoding' => ['Message::Field::CSV',{
93 -is_quoted_string => 0,
94 -use_comment => 0,
95 -value_type => {'*default' => ['Message::Field::ValueParams']},
96 }],
97 'accept-language' => ['Message::Field::CSV',{
98 -is_quoted_string => 0,
99 -use_comment => 0,
100 -value_type => {'*default' => ['Message::Field::ValueParams']},
101 }],
102 'accept-range' => ['Message::Field::CSV',{
103 -is_quoted_string => 0,
104 -use_comment => 0,
105 -value_type => {'*default' => ['Message::Field::ValueParams']},
106 }],
107 'cache-control' => ['Message::Field::CSV',{
108 -is_quoted_string => 0,
109 -use_comment => 0,
110 -value_type => {'*default' => ['Message::Field::ValueParams']},
111 }],
112 link => ['Message::Field::CSV'],
113 man => ['Message::Field::CSV',{
114 -is_quoted_string => 0,
115 -use_comment => 0,
116 -value_type => {'*default' => ['Message::Field::ValueParams']},
117 }],
118 'c-man' => ['Message::Field::CSV',{
119 -is_quoted_string => 0,
120 -use_comment => 0,
121 -value_type => {'*default' => ['Message::Field::ValueParams']},
122 }],
123 opt => ['Message::Field::CSV',{
124 -is_quoted_string => 0,
125 -use_comment => 0,
126 -value_type => {'*default' => ['Message::Field::ValueParams']},
127 }],
128 'c-opt' => ['Message::Field::CSV',{
129 -is_quoted_string => 0,
130 -use_comment => 0,
131 -value_type => {'*default' => ['Message::Field::ValueParams']},
132 }],
133 te => ['Message::Field::CSV',{
134 -is_quoted_string => 0,
135 -use_comment => 0,
136 -value_type => {'*default' => ['Message::Field::ValueParams']},
137 }],
138 trailer => ['Message::Field::CSV',{
139 -output_comment => 0,
140 -value_case_sensible => 1,
141 }],
142 'transfer-encoding' => ['Message::Field::CSV',{
143 -output_comment => 0,
144 -value_case_sensible => 1,
145 }],
146 upgrade => ['Message::Field::CSV'], ## 1#product
147 uri => ['Message::Field::CSV'],
148 vary => ['Message::Field::CSV',{
149 -output_comment => 0,
150 -value_case_sensible => 1,
151 }],
152 warning => ['Message::Field::CSV',{
153 -is_quoted_string => 0,
154 -use_comment => 0,
155 -value_type => {'*default' => ['Message::Field::Warning']},
156 }],
157
158 ## A URI
159 base => ['Message::Field::URI',{
160 -output_comment => 0,
161 -output_display_name => 0,
162 -value_pattern => 'URL:%s',
163 }],
164 location => ['Message::Field::URI'],
165 referer => ['Message::Field::URI',{
166 -allow_fragment => 0,
167 -output_angle_bracket => 0,
168 -use_comment => 0,
169 -use_display_name => 0,
170 }],
171 referrer => ['Message::Field::URI',{
172 -allow_fragment => 0,
173 -output_angle_bracket => 0,
174 -use_comment => 0,
175 -use_display_name => 0,
176 }],
177 };
178
179 $OPTION{uri_mailto_safe} = {
180 ':default' => 1,
181 };
182
183 $OPTION{field}->{ext} = { ## RFC 2774
184 empty_body => 1,
185 };
186
187 $Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
188 $Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
189
190 #package Message::Header::HTTP::C;
191 #our %OPTION = %Message::Header::HTTP::OPTION;
192 #$OPTION{namespace_uri} = 'urn:x-suika-fam-cx:msgpm:header:http:c';
193 #$OPTION{namespace_phname} = 'x-http-c';
194 #$OPTION{namespace_phname_goodcase} = 'X-HTTP-C';
195 #
196 #$Message::Header::NS_phname2uri{$OPTION{namespace_phname}} = $OPTION{namespace_uri};
197 #$Message::Header::NS_uri2phpackage{$OPTION{namespace_uri}} = __PACKAGE__;
198
199 package Message::Header::HTTP::CCPP;
200 ## CC/PP exchange protocol <http://www.w3.org/TR/NOTE-CCPPexchange>
201 our %OPTION = %Message::Header::HTTP::OPTION;
202 $OPTION{namespace_uri} = 'http://www.w3.org/1999/06/24-CCPPexchange';
203
204 $OPTION{use_ph_namespace} = 0;
205 $OPTION{namespace_phname} = '';
206 $OPTION{namespace_phname_goodcase} = '';
207
208 $OPTION{value_type} = {
209 ':default' => ['Message::Field::Unstructured'],
210 ## *-Profile-Diff-(1*DIGIT): field (field-body = application/XML)
211 profile => ['Message::Field::CSV'],
212 'profile-warning' => ['Message::Field::CSV',{
213 -is_quoted_string => 0,
214 }],
215 };
216
217 $Message::Header::NS_uri2package{ $OPTION{namespace_uri} } = __PACKAGE__;
218
219 =head1 LICENSE
220
221 Copyright 2002 wakaba E<lt>w@suika.fam.cxE<gt>.
222
223 This program is free software; you can redistribute it and/or modify
224 it under the terms of the GNU General Public License as published by
225 the Free Software Foundation; either version 2 of the License, or
226 (at your option) any later version.
227
228 This program is distributed in the hope that it will be useful,
229 but WITHOUT ANY WARRANTY; without even the implied warranty of
230 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
231 GNU General Public License for more details.
232
233 You should have received a copy of the GNU General Public License
234 along with this program; see the file COPYING. If not, write to
235 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
236 Boston, MA 02111-1307, USA.
237
238 =head1 CHANGE
239
240 See F<ChangeLog>.
241 $Date: 2002/08/04 00:16:32 $
242
243 =cut
244
245 1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24