1 package Catalyst::Engine::CGI;
4 use base 'Catalyst::Engine::CGI::Base';
8 __PACKAGE__->mk_accessors('cgi');
12 Catalyst::Engine::CGI - The CGI Engine
16 A script using the Catalyst::Engine::CGI module might look like:
21 use lib '/path/to/MyApp/lib';
26 The application module (C<MyApp>) would use C<Catalyst>, which loads the
27 appropriate engine module.
31 This is the Catalyst engine specialized for the CGI environment (using the
32 C<CGI> and C<CGI::Cookie> modules). Normally Catalyst will select the
33 appropriate engine according to the environment that it detects, however you
34 can force Catalyst to use the CGI engine by specifying the following in your
37 use Catalyst qw(-Engine=CGI);
39 The performance of this way of using Catalyst is not expected to be
40 useful in production applications, but it may be helpful for development.
48 Contains the C<CGI> object.
52 =head1 OVERLOADED METHODS
54 This class overloads some methods from C<Catalyst::Engine::CGI::Base>.
58 =item $c->prepare_body
65 # XXX this is undocumented in CGI.pm. If Content-Type is not
66 # application/x-www-form-urlencoded or multipart/form-data
67 # CGI.pm will read STDIN into a param, POSTDATA.
69 $c->request->body( $c->cgi->param('POSTDATA') );
72 =item $c->prepare_parameters
76 sub prepare_parameters {
81 if ( $c->request->method eq 'POST' ) {
82 for my $param ( $c->cgi->url_param ) {
83 for my $value ( $c->cgi->url_param($param) ) {
84 push ( @params, $param, $value );
89 for my $param ( $c->cgi->param ) {
90 for my $value ( $c->cgi->param($param) ) {
91 push ( @params, $param, $value );
95 $c->request->param(@params);
98 =item $c->prepare_request
102 sub prepare_request {
103 my ( $c, $cgi ) = @_;
104 $c->cgi( $cgi || CGI->new );
105 $c->cgi->_reset_globals;
108 =item $c->prepare_uploads
112 sub prepare_uploads {
117 for my $param ( $c->cgi->param ) {
119 my @values = $c->cgi->param($param);
121 next unless ref( $values[0] );
123 for my $fh (@values) {
125 next unless my $size = ( stat $fh )[7];
127 my $info = $c->cgi->uploadInfo($fh);
128 my $tempname = $c->cgi->tmpFileName($fh);
129 my $type = $info->{'Content-Type'};
130 my $disposition = $info->{'Content-Disposition'};
131 my $filename = ( $disposition =~ / filename="([^;]*)"/ )[0];
133 my $upload = Catalyst::Request::Upload->new(
134 filename => $filename,
136 tempname => $tempname,
140 push( @uploads, $param, $upload );
144 $c->request->upload(@uploads);
151 L<Catalyst> L<Catalyst::Engine> L<Catalyst::Engine::CGI::Base>.
155 Sebastian Riedel, C<sri@cpan.org>
156 Christian Hansen, C<ch@ngmedia.com>
160 This program is free software, you can redistribute it and/or modify it under
161 the same terms as Perl itself.