Terse::Controller - controllers made simple.
Version 0.23
package Stocks; use base 'Terse::Controller'; sub login :any { return 1; } sub auth_prevent :any(auth) { return 0; } sub auth :get :post { return $_[1]->delayed_response(sub { ... });; } sub purchase :get :delayed { # delayed attribute is the same as the above ... #1 } sub purchase_virtual :get(purchase) :params(virtual => 1) { ... #2 } sub purchase_post :post(purchase) { ... # 3 } sub purchase_virtual_post :post(purchase) :params(virtual => 1) { ... # 4 } sub other :get :path(foo/(.*)/bar) :captured(1) { ... # 5 } sub group_chat :websocket { my ($self, $context) = @_; return ( connect => sub { $_[0]->send('welcome'); }, retrieve => sub { my ($websocket, $msg) = @_; # $msg = '{"confrim_sha":"XXX", "message": "Howdy world."}'; if ($self->plugin->validate->user_message_sha($context, $websocket->graft('retrieved',$msg))) { $websocket->send($websocket->retrieved->confirm_sha); for my $open (%{ $self->websockets }) { $self->websockets->$open->send($websocket->retrieved->message); } } }, error => sub { }, disconnect => sub { } ); } 1; .... psgi ... use Terse; use Stocks; our $api = Stocks->new(); sub { my ($env) = (shift); Terse->run( plack_env => $env, application => $api, ); }; .... plackup Stocks.psgi GET http://localhost:5000/?req=purchase #1 POST http://localhost:5000/ {"req":"purchase"} #3 GET http://localhost:5000/?req=purchase&virtual=1 #2 POST http://localhost:5000/ {"req":"purchase", "virtual":1} #4 GET http://localhost:5000/foo/555/bar #5 CONNECT ws://localhost:5000/?req=group_chat;
LNATION, <email at lnation.org>
<email at lnation.org>
Terse.
To install Terse, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Terse
CPAN shell
perl -MCPAN -e shell install Terse
For more information on module installation, please visit the detailed CPAN module installation guide.