Mercurial > pub > Impl
changeset 208:3d433a977e3b
corrected RestController for empty PAT_INFO
corrected charset for ErrorHandler
author | sergey |
---|---|
date | Fri, 18 May 2012 18:43:00 +0400 |
parents | f534a60d5b01 |
children | a8db61d0ed33 |
files | Lib/IMPL/Web/Handler/ErrorHandler.pm Lib/IMPL/Web/Handler/RestController.pm Lib/IMPL/Web/Handler/ViewSelector.pm |
diffstat | 3 files changed, 38 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/Lib/IMPL/Web/Handler/ErrorHandler.pm Fri May 04 02:09:13 2012 +0400 +++ b/Lib/IMPL/Web/Handler/ErrorHandler.pm Fri May 18 18:43:00 2012 +0400 @@ -43,6 +43,7 @@ if (my $err = $@) { $action->ReinitResponse(); + $action->response->charset('utf-8'); $action->response->contentType($this->contentType); my $vars = {
--- a/Lib/IMPL/Web/Handler/RestController.pm Fri May 04 02:09:13 2012 +0400 +++ b/Lib/IMPL/Web/Handler/RestController.pm Fri May 18 18:43:00 2012 +0400 @@ -39,14 +39,20 @@ #TODO: path_info is broken for IIS my $pathInfo = $query->path_info; + my @segments; - my @segments = split /\//, $pathInfo, -1; # keep trailing empty string if present + if (length $pathInfo) { - # remove first segment since it's always empty - shift @segments; + @segments = split /\//, $pathInfo, -1; # keep trailing empty string if present + + # remove first segment since it's always empty + shift @segments; + + my ($obj,$view) = (pop(@segments) =~ m/(.*?)(?:\.(\w+))?$/); + push @segments, $obj; - my ($obj,$view) = (pop(@segments) =~ m/(.*?)(?:\.(\w+))?$/); - push @segments, $obj; + } + my $res = $this->contract->Transform($this->root, { id => '' } );
--- a/Lib/IMPL/Web/Handler/ViewSelector.pm Fri May 04 02:09:13 2012 +0400 +++ b/Lib/IMPL/Web/Handler/ViewSelector.pm Fri May 18 18:43:00 2012 +0400 @@ -57,4 +57,29 @@ return $handler->Invoke($action,$next); } -1; \ No newline at end of file +1; + +__END__ + +=pod + +=head1 NAME + +C<IMPL::Web::Handler::ViewSelector> - Выбор нужного представления на основе заголовка C<Accept> + +=head1 DESCRIPTION + +Использует заголовок запроса C<Accept> для выбора подходящего представления, если задано свойство C<types>, +пытается в первую очередь по расширению определить, какое представление подходит. + +=head1 MEMBERS + +=head2 C<[get,set,list]views> + +Список представлений, которые могут быть возвращены. + +=head2 C<[get,set]types> + +Хеш с соотвествием между расширением и типом содержимого, для подсказки при выборе представления. + +=cut \ No newline at end of file