# HG changeset patch # User sergey # Date 1337352180 -14400 # Node ID 3d433a977e3baa55d86a12db1889fc9cfc696a23 # Parent f534a60d5b0179220f672c20ccd3c241e3e7ca8a corrected RestController for empty PAT_INFO corrected charset for ErrorHandler diff -r f534a60d5b01 -r 3d433a977e3b Lib/IMPL/Web/Handler/ErrorHandler.pm --- 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 = { diff -r f534a60d5b01 -r 3d433a977e3b Lib/IMPL/Web/Handler/RestController.pm --- 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 => '' } ); diff -r f534a60d5b01 -r 3d433a977e3b Lib/IMPL/Web/Handler/ViewSelector.pm --- 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 - Выбор нужного представления на основе заголовка C + +=head1 DESCRIPTION + +Использует заголовок запроса C для выбора подходящего представления, если задано свойство C, +пытается в первую очередь по расширению определить, какое представление подходит. + +=head1 MEMBERS + +=head2 C<[get,set,list]views> + +Список представлений, которые могут быть возвращены. + +=head2 C<[get,set]types> + +Хеш с соотвествием между расширением и типом содержимого, для подсказки при выборе представления. + +=cut \ No newline at end of file