Apache-CGI-Builder

 view release on metacpan or  search on metacpan

lib/Apache2/CGI/Builder.pm  view on Meta::CPAN

package Apache2::CGI::Builder ;
$VERSION = 1.3 ;
use strict ;
# This file uses the "Perlish" coding style
# please read http://perl.4pro.net/perlish_coding_style.html

; use Carp
; $Carp::Internal{+__PACKAGE__}++
; $Carp::Internal{__PACKAGE__.'::_'}++

; use mod_perl2
; use ModPerl::Util
; use Apache2::RequestRec
; use Apache2::Response
; use Apache2::Const( -compile => 'OK' )

; use File::Basename ()

; our $usage = << ''
Apache2::CGI::Builder should be used INSTEAD of CGI::Builder and should not be included as an extension

; sub import
   { undef $usage
   ; require CGI::Builder
   ; unshift @_, 'CGI::Builder'
   ; goto &CGI::Builder::import
   }

; use Class::props
        { name       => 'no_page_content_status'
        , default    => '404 Not Found'
        }

; use Object::props
        { name     => 'r'
        , default  => sub{ Apache2::RequestUtil->request }
        }

; sub PerlResponseHandler
   { my $s = shift
   ; $s = $s->new() unless ref $s
   ; $s->process()
   ; Apache2::Const::OK()
   }

; sub OH_init
   { my $s = shift
   ; $ENV{MOD_PERL_API_VERSION}
     or croak 'Cannot use Apache2::CGI::Builder without mod_perl2, died'
   ; my $filename = $s->r->filename
   ; my ( $page_name, $page_path, $page_suffix )
   ; if (-d $filename)
      { $page_path = $filename
      }
     else
      { ( $page_name, $page_path, $page_suffix )
        = File::Basename::fileparse ( $filename
                                    , qr/\..+$/
                                    )
      }
   ; $s->page_name($page_name)     unless defined $$s{page_name}
   ; $s->page_path($page_path)     unless defined $$s{page_path}
   ; $s->page_suffix($page_suffix) unless defined $$s{page_suffix}
   }

; sub handler : method
   { my ($s, $r) = @_
   ; my $cur = ModPerl::Util::current_callback()
   ; if ( my $h = $s->can($cur) )
      { $h->(@_)
      }
     else
      { croak sprintf '"%s" does not implement any "%s" method, died'
                    , ref $s
                    , $cur
      }
   }

; 1

__END__

=pod

=head1 NAME

Apache2::CGI::Builder - CGI::Builder and Apache/mod_perl2 (new namespace)integration

=head1 VERSION 1.3

The latest versions changes are reported in the F<Changes> file in this distribution. To have the complete list of all the extensions of the CBF, see L<CGI::Builder/"Extensions List">



( run in 0.988 second using v1.01-cache-2.11-cpan-5a3173703d6 )