use strict;
use base 'Catalyst::Engine';
-use IO::File ();
use URI;
use URI::http;
-__PACKAGE__->mk_accessors('cgi');
-
=head1 NAME
Catalyst::Engine::CGI::Base - Base class for CGI Engines
This is a base class for CGI engines.
-=head1 METHODS
-
-=over 4
-
-=item $c->cgi
-
-This config parameter contains the C<CGI> object.
-
-=back
-
=head1 OVERLOADED METHODS
This class overloads some methods from C<Catalyst::Engine>.
sub prepare_body {
my $c = shift;
- my $handle = IO::File->new_from_fd( fileno(STDIN), IO::File::O_RDONLY );
- my $body = undef;
+ my $body = undef;
- while ( $handle->sysread( my $buffer, 8192 ) ) {
+ while ( read( STDIN, my $buffer, 8192 ) ) {
$body .= $buffer;
}
$c->request->address( $ENV{REMOTE_ADDR} );
$c->request->hostname( $ENV{REMOTE_HOST} );
$c->request->protocol( $ENV{SERVER_PROTOCOL} );
+ $c->request->user( $ENV{REMOTE_USER} );
+
+ if ( $ENV{HTTPS} && uc( $ENV{HTTPS} ) eq 'ON' ) {
+ $c->request->secure(1);
+ }
- if ( $ENV{HTTPS} || $ENV{SERVER_PORT} == 443 ) {
+ if ( $ENV{SERVER_PORT} == 443 ) {
$c->request->secure(1);
}
}
$base = $base->canonical->as_string;
}
+ my $location = $ENV{SCRIPT_NAME} || '/';
my $path = $ENV{PATH_INFO} || '/';
+ $path =~ s/^($location)?\///;
$path =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
$path =~ s/^\///;
=cut
-sub run { shift->handler }
+sub run { shift->handler(@_) }
=back