File Coverage

blib/lib/Data/Transpose/Validator/URL.pm
Criterion Covered Total %
statement 15 15 100.0
branch 2 2 100.0
condition n/a
subroutine 4 4 100.0
pod 1 1 100.0
total 22 22 100.0


line stmt bran cond sub pod time code
1             package Data::Transpose::Validator::URL;
2              
3 2     2   944 use strict;
  2         3  
  2         55  
4 2     2   7 use warnings;
  2         2  
  2         49  
5 2     2   7 use base 'Data::Transpose::Validator::Base';
  2         3  
  2         533  
6              
7             =head1 NAME
8              
9             Data::Transpose::Validator::URL - Validate http(s) urls
10              
11             =head1 SYNOPSIS
12              
13             =cut
14              
15              
16             my $urlre = qr/(https?:\/\/)[\w\-\.]+\.(\w+) # domain
17             (:\d+)* # the port
18             (\/[\w:\.,;\?'\\\+&%\$\#=~\@!\-]+)*
19             /x;
20              
21              
22             =head2 is_valid($url)
23              
24             Validate the url or set an error
25              
26             =cut
27              
28              
29             sub is_valid {
30 11     11 1 4500 my ($self, $url) = @_;
31 11         55 $self->reset_errors;
32 11 100       914 if ($url =~ m/^($urlre)$/s) {
33 4         33 return $1;
34             } else {
35 7         77 $self->error(
36             ["badurl",
37             "URL is not correct (the protocol is required)"]);
38 7         53 return undef;
39             }
40             }
41              
42              
43              
44              
45