5e72a98146051b41fb3671add4a65c8177eb683a
[WWW-Mechanize-Script.git] / lib / WWW / Mechanize / Script / Plugin / ContentSizeTest.pm
blob5e72a98146051b41fb3671add4a65c8177eb683a
1 package WWW::Mechanize::Script::Plugin::ContentSizeTest;
3 use strict;
4 use warnings;
6 use parent qw(WWW::Mechanize::Script::Plugin);
8 # ABSTRACT: check for size of received content
10 our $VERSION = '0.001_003';
12 use 5.014;
14 sub check_value_names
16 return qw(min_bytes max_bytes);
19 sub check_response
21 my ( $self, $check, $mech ) = @_;
23 my $code = 0;
24 my $msg;
26 my $min_bytes = $self->get_check_value( $check, "min_bytes" );
27 my $max_bytes = $self->get_check_value( $check, "max_bytes" );
28 my $content_len = length $mech->response()->content();
30 if ( defined($min_bytes) and $min_bytes > $content_len )
32 my $err_code = $self->get_check_value( $check, "min_bytes_code" ) // 1;
33 $code = &{ $check->{compute_code} }( $code, $err_code );
34 $msg = "received $content_len bytes exceeds lower threshold ($min_bytes)";
37 if ( defined($max_bytes) and $max_bytes < $content_len )
39 my $err_code = $self->get_check_value( $check, "max_bytes_code" ) // 1;
40 $code = &{ $check->{compute_code} }( $code, $err_code );
41 if ($msg)
43 $msg .= " and upper threshold ($max_bytes )";
45 else
47 $msg = "received $content_len bytes exceeds upper limit ($max_bytes)";
51 return ( $code, ( $msg ? ($msg) : () ) );