File Coverage

blib/lib/FusionInventory/Agent/Target/Server.pm
Criterion Covered Total %
statement 36 40 90.0
branch 8 10 80.0
condition 1 3 33.3
subroutine 8 10 80.0
pod 2 2 100.0
total 55 65 84.6


line stmt bran cond sub pod time code
1             package FusionInventory::Agent::Target::Server;
2              
3 32     32   23592482 use strict;
  32         45  
  32         720  
4 32     32   103 use warnings;
  32         32  
  32         671  
5 32     32   96 use base 'FusionInventory::Agent::Target';
  32         72  
  32         2661  
6              
7 32     32   122 use English qw(-no_match_vars);
  32         30  
  32         141  
8 32     32   9485 use URI;
  32         3507  
  32         159  
9              
10             my $count = 0;
11              
12             sub new {
13 8     8 1 4163 my ($class, %params) = @_;
14              
15 8 100       31 die "no url parameter" unless $params{url};
16              
17 7         41 my $self = $class->SUPER::new(%params);
18              
19 6         14 $self->{url} = _getCanonicalURL($params{url});
20              
21             # compute storage subdirectory from url
22 6         10 my $subdir = $self->{url};
23 6         19 $subdir =~ s/\//_/g;
24 6 50       63 $subdir =~ s/:/../g if $OSNAME eq 'MSWin32';
25              
26             $self->_init(
27             id => 'server' . $count++,
28 6         49 vardir => $params{basevardir} . '/' . $subdir
29             );
30              
31 6         21 return $self;
32             }
33              
34             sub _getCanonicalURL {
35 6     6   7 my ($string) = @_;
36              
37 6         28 my $url = URI->new($string);
38              
39 6         14430 my $scheme = $url->scheme();
40 6 100       275 if (!$scheme) {
41             # this is likely a bare hostname
42             # as parsing relies on scheme, host and path have to be set explicitely
43 1         3 $url->scheme('http');
44 1         75 $url->host($string);
45 1         106 $url->path('ocsinventory');
46             } else {
47 5 50 33     18 die "invalid protocol for URL: $string"
48             if $scheme ne 'http' && $scheme ne 'https';
49             # complete path if needed
50 5 100       17 $url->path('ocsinventory') if !$url->path();
51             }
52              
53 6         118 return $url;
54             }
55              
56             sub getUrl {
57 23     23 1 707 my ($self) = @_;
58              
59 23         97 return $self->{url};
60             }
61              
62             sub _getName {
63 0     0     my ($self) = @_;
64              
65 0           return $self->{url};
66             }
67              
68             sub _getType {
69 0     0     my ($self) = @_;
70              
71 0           return 'server';
72             }
73              
74             1;
75              
76             __END__