Apache2-API

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

        use Apache2::API
        # To import in your namespace
        # use Apache2::API qw( :common :http );

        # $r is an Apache2::RequestRec object that you can get from within an handler or 
        # with Apache2::RequestUtil->request
        my $api = Apache2::API->new( $r, compression_threshold => 204800 ) ||
            die( Apache2::API->error );
        # or:
        my $api = Apache2::API->new( apache_request => $r, compression_threshold => 204800 ) ||
            die( Apache2::API->error );

        # or even inside your mod_perl script/cgi:
        #!/usr/bin/perl
        use strict;
        use warnings;
        use Apache2::API;

        my $r = shift( @_ );
        my $api = Apache2::API->new( $r );
        # for example:
        return( $api->reply( Apache2::Const::HTTP_OK => { message => "Hello world" } ) );

        my $r = $api->apache_request;
        return( $api->bailout({
            message => "Oops",
            code => Apache2::Const::BAD_REQUEST,
            public_message => "An unexpected error occurred.",
        }) );
        # or
        return( $api->bailout( @some_reasons ) );

        # 100kb
        $api->compression_threshold(102400);
        my $decoded = $api->decode_base64( $b64_string );
        my $ref = $api->decode_json( $json_data );
        my $decoded = $api->decode_url;
        my $perl_utf8 = $api->decode_utf8( $data );
        my $b64_string = $api->encode_base64( $data );
        my $json_data = $api->encode_json( $ref );
        my $encoded = $api->encode_url( $uri );
        my $utf8 = $api->encode_utf8( $data );
        my $uuid = $api->generate_uuid;
        my $auth = $api->get_auth_bearer;
        my $handlers = $api->get_handlers;
        my $dt = $api->header_datetime( $http_datetime );
        my $bool = $api->is_perl_option_enabled;
        # JSON object
        my $json = $api->json( pretty => 1, sorted => 1, relaxed => 1 );
        my $lang = $api->lang( 'en_GB' );
        # en_GB
        my $lang = $api->lang_unix;
        # en-GB
        my $lang = $api->lang_web;
        $api->log_error( "Oops" );
        $api->print( @some_data );
        $api->push_handlers( $name => $code_reference );
        return( $api->reply( Apache2::Const::HTTP_OK => {
            message => "All good!",
            # arbitrary property
            client_id => "efe4bcf3-730c-4cb2-99df-25d4027ec404",
            # special property
            cleanup => sub
            {
                # Some code here to be executed after the reply is sent out to the client.
            }
        }) );
        # Apache2::API::Request
        my $req = $api->request;
        # Apache2::API::Response
        my $req = $api->response;
        my $server = $api->server;
        my $version = $api->server_version;
        $api->set_handlers( $name => $code_reference );
        $api->warn( @some_warnings );

        my $hash = apr1_md5( $clear_password );
        my $hash = apr1_md5( $clear_password, $salt );
        my $ht = $api->htpasswd( $clear_password );
        my $ht = $api->htpasswd( $clear_password, salt => $salt );
        my $hash = $ht->hash;
        say "Does our password match ? ", $ht->matches( $user_clear_password ) ? "yes" : "not";

VERSION
        v0.5.1

DESCRIPTION
    This module provides a comprehensive, powerful, yet simple framework to
    access Apache mod_perl's API <https://perl.apache.org/docs/2.0/api/> and
    documented appropriately.

    Apache mod_perl is an awesome framework, but quite complexe with a steep
    learning curve and methods all over the place. So much so that they have
    developed a module dedicated to find appropriate methods
    <https://perl.apache.org/docs/2.0/user/coding/coding.html#toc_Where_the_
    Methods_Live> with ModPerl::MethodLookup

METHODS
  new
        my $api = Apache2::API->new( $r, $hash_ref_of_options );
        # or
        my $api = Apache2::API->new( apache_request => $r, compression_threshold => 102400 );

    This initiates the package and takes an Apache2::RequestRec object and
    an hash or hash reference of parameters, or only an hash or hash
    reference of parameters:

    *   "apache_request"

        See "apache_request"

    *   "compression_threshold"

        See "compression_threshold"

    *   "debug"

        Optional. If set with a positive integer, this will activate
        debugging message

  apache_request



( run in 1.029 second using v1.01-cache-2.11-cpan-39bf76dae61 )