The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use APR::Pool;
use APR::BucketAlloc;

sub import {
    my $class = shift;
    return unless @_;
    my $pkg = caller;
    no strict 'refs';

    for (@_) {
        *{"$pkg\::$_"} = $class->can($_)
            or die "Can't find method $_ in class $class";
    }
}

sub param_status {
    my $req = shift;
    return $req->args_status || $req->body_status if wantarray;
    return ($req->args_status, $req->body_status);
}

sub upload {
    require APR::Request::Param;
    my $req = shift;
    my $body = $req->body or return;
    my $uploads = $body->uploads($req->pool);
    $uploads->param_class("APR::Request::Param");

    return $uploads->get(@_) if @_;
    return keys %$uploads if wantarray;
    return $uploads;
}

package APR::Request::Custom;
our @ISA = qw/APR::Request/;

package APR::Request::Cookie::Table;

sub EXISTS {
    my ($t, $key) = @_;
    return defined $t->FETCH($key);
}

package APR::Request::Param::Table;

sub EXISTS {
    my ($t, $key) = @_;
    return defined $t->FETCH($key);
}