Mercurial > pub > Impl
comparison Lib/IMPL/Web/Application/Response.pm @ 67:9f5795a10939
Documentation, minor fixes
author | wizard |
---|---|
date | Fri, 19 Mar 2010 20:06:12 +0300 |
parents | 2840c4c85db8 |
children | 67eb8eaec3d4 |
comparison
equal
deleted
inserted
replaced
66:f47f93534005 | 67:9f5795a10939 |
---|---|
12 use IMPL::Class::Property; | 12 use IMPL::Class::Property; |
13 | 13 |
14 #todo: add binary method to set a binary encoding, set it automatic when type isn't a text | 14 #todo: add binary method to set a binary encoding, set it automatic when type isn't a text |
15 | 15 |
16 BEGIN { | 16 BEGIN { |
17 # автозаполнение буде происходить в порядке объявления | |
17 public property query => prop_get | owner_set; # cgi query | 18 public property query => prop_get | owner_set; # cgi query |
18 public property status => prop_all, { validator => \&_checkHeaderPrinted }; | 19 public property status => prop_all, { validator => \&_checkHeaderPrinted }; |
19 public property contentType => prop_all, { validator => \&_checkHeaderPrinted }; # String | 20 public property contentType => prop_all, { validator => \&_checkHeaderPrinted }; # String |
20 public property charset => { get => \&_charset, set => \&_charset }, { validator => \&_checkHeaderPrinted }; | 21 public property charset => { get => \&_charset, set => \&_charset }, { validator => \&_checkHeaderPrinted }; |
21 public property expires => prop_all, { validator => \&_checkHeaderPrinted }; | 22 public property expires => prop_all, { validator => \&_checkHeaderPrinted }; |
30 private property _streamBody => prop_all; | 31 private property _streamBody => prop_all; |
31 } | 32 } |
32 | 33 |
33 __PACKAGE__->PassThroughArgs; | 34 __PACKAGE__->PassThroughArgs; |
34 | 35 |
36 our %CTOR = ( | |
37 'IMPL::Object::Autofill' => sub { | |
38 my %args = @_; | |
39 | |
40 $args{query} = CGI->new($args{query} || {}); | |
41 | |
42 %args; | |
43 } | |
44 ); | |
45 | |
35 sub CTOR { | 46 sub CTOR { |
36 my ($this,%args) = @_; | 47 my ($this,%args) = @_; |
37 | |
38 $this->query(CGI->new($this->query() | {})) unless $this->query; | |
39 | 48 |
40 if (lc $this->streamOut eq 'memory') { | 49 if (lc $this->streamOut eq 'memory') { |
41 my $dummy = ''; | 50 my $dummy = ''; |
42 open my $hout, '>:encoding(utf8)', \$dummy or die new IMPL::Exception("Failed to create memory stream",$!); | 51 open my $hout, '>:encoding(utf8)', \$dummy or die new IMPL::Exception("Failed to create memory stream",$!); |
43 $this->streamOut($hout); | 52 $this->streamOut($hout); |
163 | 172 |
164 __END__ | 173 __END__ |
165 | 174 |
166 =pod | 175 =pod |
167 | 176 |
177 =head1 NAME | |
178 | |
179 C<IMPL::Web::Application::Response> - Ответ веб сервера непосредственно клиенту. | |
180 | |
168 =head1 DESCRIPTION | 181 =head1 DESCRIPTION |
169 | 182 |
170 Ответ сервера на CGI запрос, позволяет сформировать основные свойства заголовка и тело запроса. | 183 C<[Infrastructure]> |
184 | |
185 Позволяет сформировать основные свойства заголовка и тело ответа. | |
186 | |
187 Создается объектом C<IMPL::Web::Application::Action> в процессе обработки запроса. | |
188 | |
189 Может использоваться обработчиками C<IMPL::Web::QueryHandler> в процессе выполнения запроса. | |
171 | 190 |
172 Объект позволяет буфферизировать вывод в тело ответа, что позволяет отменить или изменить | 191 Объект позволяет буфферизировать вывод в тело ответа, что позволяет отменить или изменить |
173 ответ в последний момент. | 192 ответ в последний момент. Свойство C< isHeaderPrinted > используется для определения факта |
174 | 193 отправлки данных клиенту. |
175 Свойство C< isHeaderPrinted > можно использовать для определения были ли отправлены какие-нибудь | |
176 данные клиенту. | |
177 | 194 |
178 =head1 PROPERTIES | 195 =head1 PROPERTIES |
179 | 196 |
180 =head2 HTTP Header | 197 =head2 HTTP Header |
181 | 198 |
182 Свойства отвечающие за заголовок HTTP ответа. Эти своства могут быть изменены до тех пор пока | 199 Свойства отвечающие за заголовок HTTP ответа. Эти своства могут быть изменены до тех пор пока |
183 не будет отправлен заголовок. В противном случае выдается исключение C< IMPL::InvalidOperationException >. | 200 не будет отправлен заголовок. В противном случае выдается исключение C< IMPL::InvalidOperationException >. |
184 | 201 |
185 =over | 202 =over |
186 | 203 |
187 =item C< query > | 204 =item C< [get] query > |
188 | 205 |
189 CGI запрос, который используется для вывода данных, заголовка и пр. Существует всегда. | 206 CGI запрос, который используется для вывода данных, заголовка и пр. Существует всегда. |
190 | 207 |
191 =item C< status > | 208 =item C< [get,set] status > |
192 | 209 |
193 Код ошибки HTTP. Например, '200 OK'. По умолчанию не установлен, при отправке клиенту бедт отправлен '200 ОК'. | 210 Код ошибки HTTP. Например, '200 OK'. По умолчанию не установлен, при отправке клиенту бедт отправлен '200 ОК'. |
194 | 211 |
195 =item C< contentType > | 212 =item C< [get,set] contentType > |
196 | 213 |
197 Тип MIME. По умолчанию не установлен, подразумивается 'text/html'. | 214 Тип MIME. По умолчанию не установлен, подразумивается 'text/html'. |
198 | 215 |
199 =item C< charset > | 216 =item C< [get,set] charset > |
200 | 217 |
201 Кодировка, синоним свойства query->charset. | 218 Кодировка, синоним свойства query->charset. |
202 | 219 |
203 =item C< expires > | 220 =item C< [get,set] expires > |
204 | 221 |
205 Определяет время жизни контента, например '+10m'. По умолчанию не задано и не передается. | 222 Определяет время жизни контента, например '+10m'. По умолчанию не задано и не передается. |
206 | 223 |
207 =item C< cookies > | 224 =item C< [get,set] cookies > |
208 | 225 |
209 Хеш массив с cookies, например C< { cart => ['foo','bar'], display => 'list' } >. | 226 Хеш массив с cookies, например C< { cart => ['foo','bar'], display => 'list' } >. |
210 | 227 |
211 =back | 228 =back |
212 | 229 |
214 | 231 |
215 Свойства отвечающие за поведение ответа. | 232 Свойства отвечающие за поведение ответа. |
216 | 233 |
217 =over | 234 =over |
218 | 235 |
219 =item C< buffered > | 236 =item C< [get,set] buffered > |
220 | 237 |
221 C< True > - то тело ответа пишется в буффер и будет отправлено при вызове метода C< Complete >, | 238 C< True > - то тело ответа пишется в буффер и будет отправлено при вызове метода C< Complete >, |
222 заголовок также будет отправлен после вызова метода C< Complete >. | 239 заголовок также будет отправлен после вызова метода C< Complete >. |
223 | 240 |
224 C< False > - тело ответа пишется непосредственно в поток к клиенту, при этом заголовок | 241 C< False > - тело ответа пишется непосредственно в поток к клиенту, при этом заголовок |
225 будет отправлен при первом обращении к свойству C< streamBody > | 242 будет отправлен при первом обращении к свойству C< streamBody > |
226 | 243 |
227 Это свойство можно менять до первого обращения к потоку для записи в тело ответа. | 244 Это свойство можно менять до первого обращения к потоку для записи в тело ответа. |
228 | 245 |
229 =item C< streamOut > | 246 =item C< [get] streamOut > |
230 | 247 |
231 Стандартный вывод CGI приложения. | 248 Стандартный вывод CGI приложения. |
232 | 249 |
233 =item C< streamBody > | 250 =item C< [get] streamBody > |
234 | 251 |
235 Поток для записи в тело ответа. | 252 Поток для записи в тело ответа. |
236 | 253 |
237 =item C< isHeadPrinted > | 254 =item C< [get] isHeadPrinted > |
238 | 255 |
239 Признак того, что заголовок уже был отправлен клиенту. | 256 Признак того, что заголовок уже был отправлен клиенту. |
240 | 257 |
241 =back | 258 =back |
242 | 259 |
253 Отменяет отправку ответа, при этом если часть данных (например, заголовок) | 270 Отменяет отправку ответа, при этом если часть данных (например, заголовок) |
254 уже была отправлена, выдает предупреждение в STDERR. | 271 уже была отправлена, выдает предупреждение в STDERR. |
255 | 272 |
256 =back | 273 =back |
257 | 274 |
275 =head1 REMARKS | |
276 | |
277 Данный объект является автозаполняемым, т.е. все его свойства можно задать через | |
278 именованные параметры конструктора. | |
279 | |
258 =cut | 280 =cut |