From: John Napiorkowski Date: Tue, 3 May 2011 18:35:15 +0000 (-0400) Subject: first attempt at a patch to enable compatibility with psgi files based on Catalyst... X-Git-Tag: 5.89003~45 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=89cb63ec32ead40a2ba223fce60016e3c19ce5ab first attempt at a patch to enable compatibility with psgi files based on Catalyst::Engine::PSGI and also a change to stop the author side pod coverage tests complaining pointlessly --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index c337b30..596422c 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -2410,7 +2410,27 @@ Starts the engine. =cut -sub run { my $c = shift; return $c->engine->run( $c, $c->_finalized_psgi_app, @_ ) } +sub run { + my $c = shift; + $c->engine_loader->needs_psgi_engine_compat_hack ? + $c->_run_needs_psgi_engine_compat_hack(@_) : + $c->engine->run( $c, $c->_finalized_psgi_app, @_ ); +} + +sub _run_needs_psgi_engine_compat_hack { + my $c = shift; + + ## We assume if they used the classic PSGI Engine, they must has CC:M + for my $metal (Catalyst::Controller::Metal->metals_for($c)) { + my $res = $metal->call(@_); + if (defined $res && !(ref $res eq 'ARRAY' && $res->[0] == 404)) { + return $res; + } + } + + ## If we got this far, just do the psgi app + $c->_finalized_psgi_app->(@_) +} =head2 $c->set_action( $action, $code, $namespace, $attrs ) diff --git a/lib/Catalyst/Request/Upload.pm b/lib/Catalyst/Request/Upload.pm index 1675531..4d3d099 100644 --- a/lib/Catalyst/Request/Upload.pm +++ b/lib/Catalyst/Request/Upload.pm @@ -5,7 +5,7 @@ with 'MooseX::Emulate::Class::Accessor::Fast'; use Catalyst::Exception; use File::Copy (); -use IO::File qw( SEEK_SET ); +use IO::File (); use File::Spec::Unix; has filename => (is => 'rw'); @@ -146,12 +146,12 @@ sub slurp { binmode( $handle, $layer ); - $handle->seek(0, SEEK_SET); + $handle->seek(0, IO::File::SEEK_SET); while ( $handle->sysread( my $buffer, 8192 ) ) { $content .= $buffer; } - $handle->seek(0, SEEK_SET); + $handle->seek(0, IO::File::SEEK_SET); return $content; }