| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
HTML::FormFu::Constraint::File::Size - File Size Constraint
Ensure that an uploaded file meets minimum or maximum size constraints.
Shortcut for $constraint->minimum( $value * 1024 ).
min_kilobyte is an alias for minimum_kilobyte.
Shortcut for $constraint->maximum( $value * 1024 ).
max_kilobyte is an alias for maximum_kilobyte.
Shortcut for $constraint->minimum( $value * 1_048_576 ).
min_megabyte is an alias for minimum_megabyte.
Shortcut for $constraint->maximum( $value * 1_048_576 ).
max_megabyte is an alias for maximum_megabyte.
Is a sub-class of, and inherits methods from HTML::FormFu::Constraint
Carl Franks, cfranks@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
package HTML::FormFu::Constraint::File::Size; use Moose; use MooseX::Aliases; extends 'HTML::FormFu::Constraint'; use Carp qw( croak ); use Scalar::Util qw( blessed ); has minimum => ( is => 'rw', alias => 'min', traits => ['Chained'], ); has maximum => ( is => 'rw', alias => 'max', traits => ['Chained'], ); *min_kilobyte = \&minimum_kilobyte; *max_kilobyte = \&maximum_kilobyte; *min_megabyte = \&minimum_megabyte; *max_megabyte = \&maximum_megabyte; sub constrain_value { my ( $self, $value ) = @_; return 1 if !defined $value || $value eq ''; return if !blessed($value) || !$value->isa('HTML::FormFu::Upload'); my $min = $self->minimum; my $max = $self->maximum; my $size = $value->size || 0; if ( defined $min ) { return 0 if $size < $min; } if ( defined $max ) { return 0 if $size > $max; } return 1; } sub _localize_args { my ($self) = @_; return $self->min, $self->max; } sub minimum_kilobyte { my ( $self, $kb ) = @_; croak "minimum_kilobyte() cannot be used as a getter" if @_ != 2; return $self->minimum( $kb * 1024 ); } sub minimum_megabyte { my ( $self, $kb ) = @_; croak "minimum_megabyte() cannot be used as a getter" if @_ != 2; return $self->minimum( $kb * 1_048_576 ); } sub maximum_kilobyte { my ( $self, $kb ) = @_; croak "maximum_kilobyte() cannot be used as a getter" if @_ != 2; return $self->maximum( $kb * 1024 ); } sub maximum_megabyte { my ( $self, $kb ) = @_; croak "maximum_megabyte() cannot be used as a getter" if @_ != 2; return $self->maximum( $kb * 1_048_576 ); } __PACKAGE__->meta->make_immutable; 1; __END__