Changeset 29306
- Timestamp:
- 01/30/09 21:21:37 (4 years ago)
- Location:
- lang/perl/HTTP-Engine-Middleware/branches/declare
- Files:
-
- 3 modified
-
lib/HTTP/Engine/Middleware/Encode.pm (modified) (1 diff)
-
lib/HTTP/Engine/Middleware/ModuleReload.pm (modified) (1 diff)
-
t/200_middlewares/encode.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/HTTP-Engine-Middleware/branches/declare/lib/HTTP/Engine/Middleware/Encode.pm
r29266 r29306 1 1 package HTTP::Engine::Middleware::Encode; 2 use Moose; 3 2 use HTTP::Engine::Middleware; 4 3 use Data::Visitor::Encode; 5 4 6 sub wrap{7 my ( $class, $next) = @_;5 before_handle { 6 my ( $c, $self, $req ) = @_; 8 7 9 sub { 10 my $req = shift; 11 if (($req->headers->header('Content-Type')||'') =~ /charset=(.+);?$/) { 12 # decode parameters 13 my $encoding = $1; 14 for my $method (qw/params query_params body_params/) { 15 $req->$method( Data::Visitor::Encode->decode($encoding, $req->$method) ); 16 } 8 if (( $req->headers->header('Content-Type') || '' ) =~ /charset=(.+);?$/ ) 9 { 17 10 18 $next->($req); 11 # decode parameters 12 my $encoding = $1; 13 for my $method (qw/params query_params body_params/) { 14 $req->$method( 15 Data::Visitor::Encode->decode( $encoding, $req->$method ) ); 19 16 } 20 }; 21 } 17 } 18 $req; 19 }; 22 20 23 1; 21 __MIDDLEWARE__ -
lang/perl/HTTP-Engine-Middleware/branches/declare/lib/HTTP/Engine/Middleware/ModuleReload.pm
r29266 r29306 1 1 package HTTP::Engine::Middleware::ModuleReload; 2 use Moose;2 use HTTP::Engine::Middleware; 3 3 use Module::Reload; 4 4 5 sub wrap { 6 my ($class, $next) = shift; 5 before_handle { 6 my ( $c, $self, $req ) = @_; 7 Module::Reload->check; 8 $req; 9 }; 7 10 8 sub { 9 my $req = shift; 10 Module::Reload->check; 11 __MIDDLEWARE__ 11 12 12 $next->($req);13 };14 }15 16 1;17 13 __END__ 18 14 -
lang/perl/HTTP-Engine-Middleware/branches/declare/t/200_middlewares/encode.t
r29273 r29306 10 10 plan skip_all => "HTTP::Engine is not installed: $@" if $@; 11 11 12 eval q{ use HTTP::Engine::Middleware ::Encode};12 eval q{ use HTTP::Engine::Middleware }; 13 13 14 plan tests => 3 *blocks;14 plan tests => 3 * blocks; 15 15 16 16 use Encode; 17 17 use URI; 18 18 19 filters { 20 params => [qw/eval/], 21 }; 19 filters { params => [qw/eval/], }; 22 20 23 21 run { 24 22 my $block = shift; 25 23 26 my $request = HTTP::Request->new( GET => $block->uri, ['Content-Type' => $block->content_type] ); 24 my $mw = HTTP::Engine::Middleware->new; 25 $mw->install( 'HTTP::Engine::Middleware::Encode', ); 26 27 my $request = HTTP::Request->new( 28 GET => $block->uri, 29 [ 'Content-Type' => $block->content_type ] 30 ); 27 31 28 32 my $do_test = sub { 29 33 my $req = shift; 30 ok Encode::is_utf8( $req->params->{'nite'});34 ok Encode::is_utf8( $req->params->{'nite'} ); 31 35 is_deeply $req->params, $block->params, $block->name; 32 HTTP::Engine::Response->new( body => 'OK!');36 HTTP::Engine::Response->new( body => 'OK!' ); 33 37 }; 34 38 35 39 my $response = HTTP::Engine->new( 36 40 interface => { 37 module => 'Test',38 request_handler => HTTP::Engine::Middleware::Encode->wrap($do_test),41 module => 'Test', 42 request_handler => $mw->handler($do_test), 39 43 }, 40 44 )->run($request);
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)