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 |
