Mercurial > pub > Impl
view Lib/IMPL/Web/RestContract.pm @ 198:2ffe6f661605
Implemented IMPL::Web::Handler::RestController
fixes in IMPL::Serialization
completed IMPL::Web::Application::RestResource
added IMPL::Web::Handler::JSONView
added IMPL::Web::RestContract
author | cin |
---|---|
date | Fri, 20 Apr 2012 16:06:36 +0400 |
parents | |
children | e743a8481327 |
line wrap: on
line source
package IMPL::Web::RestContract; use strict; use IMPL::lang qw(:declare :constants); use IMPL::declare { require => { Exception => 'IMPL::Exception', InvalidOpException => '-IMPL::InvalidOperationException', ForbiddenException => 'IMPL::Web::ForbiddenException', TRestResource => 'IMPL::Web::Application::RestResource', }, base => { 'IMPL::Transform' => sub { my %args = @_; $args{resources} }, 'IMPL::Object::Serializable' => undef } }; sub CTOR { my ($this) = @_; $this->templates->{-plain} = sub { die ForbiddenException->new(); }; $this->templates->{-default} = sub { die ForbiddenException->new(); }; $this->templates->{TRestResource} = sub { $_[0] }; } sub ProcessTemplate { my ($this,$t,$obj,@args) = @_; if (ref $t eq 'HASH') { my $factory = $t->{factory} || TRestResource; return $factory->new(%$t, target => $obj); } elsif (ref $t eq 'CODE') { return $this->$t($obj,@args); } else { die InvalidOpException->new(); } } 1; __END__ =pod =head1 NAME C<IMPL::Web::RestContract> Описывает правила публикации ресурсов. =head1 SYNOPSIS =begin code =end code =cut