Mercurial > pub > Impl
view Lib/IMPL/Web/Handler/JSONView.pm @ 251:9f394b27dccf
require can handle recursive module references
author | sergey |
---|---|
date | Fri, 16 Nov 2012 16:44:16 +0400 |
parents | f48a1a9f4fa2 |
children | 32aceba4ee6d |
line wrap: on
line source
package IMPL::Web::Handler::JSONView; use strict; use JSON; use IMPL::declare { require => { HttpResponse => 'IMPL::Web::HttpResponse', ViewResult => '-IMPL::Web::ViewResult' }, base => [ 'IMPL::Object' => undef, 'IMPL::Object::Serializable' => undef, 'IMPL::Object::Autofill' => '@_' ] }; sub contentType { 'application/json' } sub Invoke { my ($this,$action,$next) = @_; my $result = $next ? $next->($action) : undef; my $model = ( ref $result and eval { $result->isa(ViewResult) } ) ? $result->model : $result; $model = [$model] unless ref $model; return HttpResponse->new({ type => $this->contentType, charset => 'utf-8', body => JSON->new->utf8->pretty->encode($model) }); } 1; __END__ =pod =head1 =cut