Provided by: libcgi-psgi-perl_0.15-3_all bug

NAME

       CGI::PSGI - Adapt CGI.pm to the PSGI protocol

SYNOPSIS

         use CGI::PSGI;

         my $app = sub {
             my $env = shift;
             my $q = CGI::PSGI->new($env);
             return [ $q->psgi_header, [ $body ] ];
         };

DESCRIPTION

       This module is for web application framework developers who currently uses CGI to handle
       query parameters, and would like for the frameworks to comply with the PSGI protocol.

       Only slight modifications should be required if the framework is already collecting the
       body content to print to STDOUT at one place (rather using the print-as-you-go approach).

       On the other hand, if you are an "end user" of CGI.pm and have a CGI script that you want
       to run under PSGI web servers, this module might not be what you want.  Take a look at
       CGI::Emulate::PSGI instead.

       Your application, typically the web application framework adapter should update the code
       to do "CGI::PSGI->new($env)" instead of "CGI->new" to create a new CGI object. (This is
       similar to how CGI::Fast object is initialized in a FastCGI environment.)

INTERFACES SUPPORTED

       Only the object-oriented interface of CGI.pm is supported through CGI::PSGI.  This means
       you should always create an object with "CGI::PSGI->new($env)" and should call methods on
       the object.

       The function-based interface like "use CGI ':standard'" does not work with this module.

METHODS

       CGI::PSGI adds the following extra methods to CGI.pm:

   env
         $env = $cgi->env;

       Returns the PSGI environment in a hash reference. This allows CGI.pm-based application
       frameworks such as CGI::Application to access PSGI extensions, typically set by Plack
       Middleware components.

       So if you enable Plack::Middleware::Session, your application and plugin developers can
       access the session via:

         $cgi->env->{'plack.session'}->get("foo");

       Of course this should be coded carefully by checking the existence of "env" method as well
       as the hash key "plack.session".

   psgi_header
        my ($status_code, $headers_aref) = $cgi->psgi_header(%args);

       Works like CGI.pm's header(), but the return format is modified. It returns an array with
       the status code and arrayref of header pairs that PSGI requires.

       If your application doesn't use "$cgi->header", you can ignore this method and generate
       the status code and headers arrayref another way.

   psgi_redirect
        my ($status_code, $headers_aref) = $cgi->psgi_redirect(%args);

       Works like CGI.pm's redirect(), but the return format is modified. It returns an array
       with the status code and arrayref of header pairs that PSGI requires.

       If your application doesn't use "$cgi->redirect", you can ignore this method and generate
       the status code and headers arrayref another way.

LIMITATIONS

       Do not use CGI::Pretty or something similar in your controller. The module messes up CGI's
       DIY autoloader and breaks CGI::PSGI (and potentially other) inheritance.

AUTHOR

       Tatsuhiko Miyagawa <miyagawa@bulknews.net>

       Mark Stosberg <mark@summersault.com>

LICENSE

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.

SEE ALSO

       CGI, CGI::Emulate::PSGI