annotate Lib/IMPL/Web/Application/Response.pm @ 65:2840c4c85db8

Application configuration improvements Documentation
author wizard
date Tue, 16 Mar 2010 17:36:13 +0300
parents 76b878ad6596
children 9f5795a10939
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59
0f3e369553bd Rewritten property implementation (probably become slower but more flexible)
wizard
parents: 58
diff changeset
1 package IMPL::Web::Application::Response;
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
2 use strict;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
3
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
4 use base qw(IMPL::Object IMPL::Object::Autofill);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
5
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
6 require IMPL::Exception;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
7 require CGI;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
8 require CGI::Cookie;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
9
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
10 use Carp;
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
11 use Encode;
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
12 use IMPL::Class::Property;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
13
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
14 #todo: add binary method to set a binary encoding, set it automatic when type isn't a text
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
15
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
16 BEGIN {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
17 public property query => prop_get | owner_set; # cgi query
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
18 public property status => prop_all, { validator => \&_checkHeaderPrinted };
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
19 public property contentType => prop_all, { validator => \&_checkHeaderPrinted }; # String
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
20 public property charset => { get => \&_charset, set => \&_charset }, { validator => \&_checkHeaderPrinted };
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
21 public property expires => prop_all, { validator => \&_checkHeaderPrinted };
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
22 public property cookies => prop_all, { validator => \&_checkHeaderPrinted }; # Hash
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
23
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
24 public property buffered => prop_all, { validator => \&_canChangeBuffer }; # Boolean
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
25 public property streamOut => prop_get | owner_set; # stream
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
26 public property streamBody => {get => \&getStreamBody }; # stream
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
27 public property isHeaderPrinted => prop_get | owner_set; # Boolean
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
28
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
29 private property _bufferBody => prop_all;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
30 private property _streamBody => prop_all;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
31 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
32
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
33 __PACKAGE__->PassThroughArgs;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
34
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
35 sub CTOR {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
36 my ($this,%args) = @_;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
37
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
38 $this->query(CGI->new($this->query() | {})) unless $this->query;
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
39
65
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
40 if (lc $this->streamOut eq 'memory') {
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
41 my $dummy = '';
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
42 open my $hout, '>:encoding(utf8)', \$dummy or die new IMPL::Exception("Failed to create memory stream",$!);
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
43 $this->streamOut($hout);
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
44 } elsif (not $this->streamOut) {
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
45 $this->streamOut(*STDOUT);
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
46 } else {
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
47 die new IMPL::InvalidArgumentException("Invalid parameter value",$this->streamOut);
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
48 }
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
49
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
50 $this->buffered(1) unless defined $this->buffered;
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
51 binmode $this->streamOut, ":encoding(".$this->charset.")";
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
52 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
53
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
54 sub _checkHeaderPrinted {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
55 my ($this,$value) = @_;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
56
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
57 die new IMPL::InvalidOperationException() if $this->isHeaderPrinted;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
58 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
59
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
60 sub _canChangeBuffer {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
61 my ($this,$value) = @_;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
62
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
63 die new IMPL::InvalidOperationException() if $this->isHeaderPrinted or $this->_streamBody;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
64 }
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
65
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
66 sub _charset {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
67 my $this = shift;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
68
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
69 if (@_) {
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
70 my $charset = $this->query->charset(@_);
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
71
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
72 my $hout = $this->streamOut;
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
73
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
74 binmode $hout;
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
75 binmode $hout, ":encoding($charset)";
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
76
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
77 return $charset;
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
78 } else {
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
79 return $this->query->charset;
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
80 }
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
81 }
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
82
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
83 sub _PrintHeader {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
84 my ($this) = @_;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
85
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
86 unless ($this->isHeaderPrinted) {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
87 $this->isHeaderPrinted(1);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
88
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
89 my %opt;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
90
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
91 $opt{-type} = $this->contentType if $this->contentType;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
92 $opt{-status} = $this->status if $this->status;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
93 $opt{-expires} = $this->expires if $this->expires;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
94
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
95 my $refCookies = $this->cookies;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
96 $opt{-cookie} = [map CGI::Cookie->new(-name => $_, $refCookies->{$_} ), keys %$refCookies] if $refCookies;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
97
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
98 my $hOut = $this->streamOut;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
99
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
100 print $hOut $this->query->header(
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
101 %opt
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
102 );
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
103 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
104 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
105
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
106 sub getStreamBody {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
107 my ($this) = @_;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
108
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
109 return undef unless $this->streamOut;
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
110
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
111 unless ($this->_streamBody) {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
112 if ($this->buffered) {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
113 my $buffer = "";
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
114
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
115 $this->_bufferBody(\$buffer);
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
116
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
117 open my $hBody, ">:encoding(utf-8)", \$buffer or die new IMPL::Exception("Failed to create buffer",$!);
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
118
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
119 Encode::_utf8_on($buffer);
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
120
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
121 $this->_streamBody($hBody);
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
122 } else {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
123 $this->_PrintHeader();
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
124 $this->_streamBody($this->streamOut);
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
125 }
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
126 }
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
127
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
128 return $this->_streamBody;
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
129 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
130
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
131 sub Complete {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
132 my ($this) = @_;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
133
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
134 return 0 unless $this->streamOut;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
135
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
136 my $hOut = $this->streamOut;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
137
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
138 $this->_PrintHeader();
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
139
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
140 $this->_streamBody(undef);
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
141
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
142 if ($this->buffered) {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
143 print $hOut ${$this->_bufferBody};
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 59
diff changeset
144 }
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
145
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
146 $this->_bufferBody(undef);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
147 $this->streamOut(undef);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
148
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
149 return 1;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
150 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
151
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
152 sub Discard {
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
153 my ($this) = @_;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
154
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
155 carp "Discarding sent response" if $this->isHeaderPrinted;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
156
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
157 $this->_streamBody(undef);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
158 $this->_bufferBody(undef);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
159 $this->streamOut(undef);
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
160 }
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
161
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
162 1;
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
163
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
164 __END__
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
165
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
166 =pod
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
167
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
168 =head1 DESCRIPTION
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
169
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
170 Ответ сервера на CGI запрос, позволяет сформировать основные свойства заголовка и тело запроса.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
171
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
172 Объект позволяет буфферизировать вывод в тело ответа, что позволяет отменить или изменить
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
173 ответ в последний момент.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
174
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
175 Свойство C< isHeaderPrinted > можно использовать для определения были ли отправлены какие-нибудь
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
176 данные клиенту.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
177
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
178 =head1 PROPERTIES
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
179
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
180 =head2 HTTP Header
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
181
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
182 Свойства отвечающие за заголовок HTTP ответа. Эти своства могут быть изменены до тех пор пока
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
183 не будет отправлен заголовок. В противном случае выдается исключение C< IMPL::InvalidOperationException >.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
184
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
185 =over
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
186
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
187 =item C< query >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
188
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
189 CGI запрос, который используется для вывода данных, заголовка и пр. Существует всегда.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
190
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
191 =item C< status >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
192
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
193 Код ошибки HTTP. Например, '200 OK'. По умолчанию не установлен, при отправке клиенту бедт отправлен '200 ОК'.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
194
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
195 =item C< contentType >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
196
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
197 Тип MIME. По умолчанию не установлен, подразумивается 'text/html'.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
198
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
199 =item C< charset >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
200
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
201 Кодировка, синоним свойства query->charset.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
202
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
203 =item C< expires >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
204
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
205 Определяет время жизни контента, например '+10m'. По умолчанию не задано и не передается.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
206
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
207 =item C< cookies >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
208
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
209 Хеш массив с cookies, например C< { cart => ['foo','bar'], display => 'list' } >.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
210
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
211 =back
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
212
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
213 =head2 Response behaviour
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
214
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
215 Свойства отвечающие за поведение ответа.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
216
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
217 =over
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
218
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
219 =item C< buffered >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
220
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
221 C< True > - то тело ответа пишется в буффер и будет отправлено при вызове метода C< Complete >,
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
222 заголовок также будет отправлен после вызова метода C< Complete >.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
223
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
224 C< False > - тело ответа пишется непосредственно в поток к клиенту, при этом заголовок
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
225 будет отправлен при первом обращении к свойству C< streamBody >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
226
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
227 Это свойство можно менять до первого обращения к потоку для записи в тело ответа.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
228
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
229 =item C< streamOut >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
230
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
231 Стандартный вывод CGI приложения.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
232
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
233 =item C< streamBody >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
234
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
235 Поток для записи в тело ответа.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
236
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
237 =item C< isHeadPrinted >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
238
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
239 Признак того, что заголовок уже был отправлен клиенту.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
240
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
241 =back
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
242
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
243 =head1 METHODS
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
244
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
245 =over
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
246
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
247 =item C< Complete >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
248
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
249 Завершает отправку ответа.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
250
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
251 =item C< Discard >
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
252
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
253 Отменяет отправку ответа, при этом если часть данных (например, заголовок)
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
254 уже была отправлена, выдает предупреждение в STDERR.
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
255
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
256 =back
57
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
257
bf59ee1cd506 Web application main class functionality
wizard
parents:
diff changeset
258 =cut