package Apache2::ASP::UploadHookArgs; use strict; use warnings 'all'; #============================================================================== sub new { my ($s, %args) = @_; exists($args{$_}) or die "Required parameter '$_' was not provided" foreach qw( upload percent_complete elapsed_time total_expected_time time_remaining length_received data ); $args{content_length} = $ENV{CONTENT_LENGTH}; $args{new_file} = undef; $args{filename_only} = undef; $args{link_to_file} = undef; return bless \%args, $s; }# end new() #============================================================================== sub AUTOLOAD { my $s = shift; our $AUTOLOAD; my ($key) = $AUTOLOAD =~ m/::([^:]+)$/; return exists($s->{$key}) ? $s->{$key} : die "Invalid UploadHookArgs key '$key'"; }# end AUTOLOAD() sub DESTROY { } 1;# return true: __END__ =pod =head1 NAME Apache2::ASP::UploadHookArgs - Argument for UploadHook instances =head1 SYNOPSIS my $Upload = Apache2::ASP::UploadHookArgs->new( upload => $upload, # An APR::Request::Param::Table object percent_complete => $percent_complete, elapsed_time => $elapsed_time, # in seconds total_expected_time => $total_expected_time, # in seconds time_remaining => $time_remaining, # in seconds length_received => $length_received, # in bytes data => defined($data) ? $data : undef, # bytes received in this "chunk" ); =head1 DESCRIPTION Rather than just passing a hashref as an argument, this class serves to enforce some structure to the whole Apache2::ASP upload model. =head1 METHODS =head2 new( %args ) C<%args> should be as shown in the synopsis above. =head2 upload( ) Returns an L object. =head2 percent_complete( ) Returns a float representing what percent of the upload has been received so far. =head2 elapsed_time( ) Returns the number of seconds since the upload began. =head2 total_expected_time( ) Returns the total number of seconds we expect the upload to last. =head2 time_remaining( ) Returns the number of seconds the upload will continue after this point in time. =head2 length_received( ) Returns the number of bytes we have received from the upload so far. =head2 content_length( ) Returns the value of C<$ENV{CONTENT_LENGTH}> at this point, but may be updated later, based on usage and requirements. =head2 data( ) Returns the bytes received in this "chunk" of the upload. =head1 AFTER THE UPLOAD HAS FINISHED After the upload has finished, you can count on the following methods returning actual values: =head2 new_file( ) Returns the filename of the new file, as it was in the upload form field. Example: C =head2 filename_only( ) Returns something like C =head2 link_to_file( ) Returns something like C =head1 BUGS It's possible that some bugs have found their way into this release. Use RT L to submit bug reports. =head1 HOMEPAGE Please visit the Apache2::ASP homepage at L to see examples of Apache2::ASP in action. =head1 AUTHOR John Drago L =head1 COPYRIGHT AND LICENSE Copyright 2007 John Drago, All rights reserved. This software is free software. It may be used and distributed under the same terms as Perl itself. =cut