File Coverage

blib/lib/IO/All/LWP.pm
Criterion Covered Total %
statement 15 64 23.4
branch 0 26 0.0
condition 0 15 0.0
subroutine 5 15 33.3
pod 9 10 90.0
total 29 130 22.3


line stmt bran cond sub pod time code
1             package IO::All::LWP;
2             require 5.008;
3 4     4   703 use strict;
  4         7  
  4         133  
4 4     4   19 use warnings;
  4         7  
  4         171  
5             our $VERSION = '0.14';
6 4     4   3943 use IO::All 0.30 '-base';
  4         70946  
  4         77  
7 4     4   6405 use LWP::UserAgent;
  4         277697  
  4         258  
8 4     4   5431 use IO::Handle;
  4         38286  
  4         5697  
9              
10             my $DEFAULT_UA = LWP::UserAgent->new(env_proxy => 1);
11              
12             field 'response';
13             field 'content';
14             field 'put_content';
15              
16             sub lwp_init {
17 0     0 0   my $self = shift;
18 0           bless $self, shift;
19 0 0         $self->name(shift) if @_;
20 0           return $self->_init;
21             }
22              
23             sub ua {
24 0     0 1   my $self = shift;
25 0 0         if (@_) {
26 0 0         *$self->{ua} = ref($_[0]) ? shift :
27             LWP::UserAgent->new(@_);
28 0           return $self;
29             } else {
30 0   0       *$self->{ua} ||= $DEFAULT_UA;
31             }
32             }
33              
34             sub uri {
35 0     0 1   my $self = shift;
36 0 0         *$self->{uri} = ref($_[0]) ? shift : URI->new(shift)
    0          
37             if @_;
38 0 0         return *$self->{uri}
39             if defined *$self->{uri};
40 0           *$self->{uri} = URI->new($self->name);
41             }
42            
43             sub user {
44 0     0 1   my $self = shift;
45 0           $self->uri->user(@_);
46 0           return $self;
47             }
48              
49             sub password {
50 0     0 1   my $self = shift;
51 0           $self->uri->password(@_);
52 0           return $self;
53             }
54              
55             sub get {
56 0     0 1   my $self = shift;
57 0   0       my $request = shift || HTTP::Request->new('GET', $self->uri);
58 0           $self->request($request);
59             }
60              
61             sub put {
62 0     0 1   my $self = shift;
63             my $request = (@_ and ref $_[0])
64             ? $_[0]
65 0 0 0       : do {
66 0 0         my $content = @_ ? shift : $self->content;
67 0           HTTP::Request->new(PUT => $self->uri, undef, $content);
68             };
69 0           $self->request($request);
70 0           $self->is_open(0);
71             }
72              
73             sub request {
74 0     0 1   my $self = shift;
75 0           $self->response($self->ua->request(shift));
76             }
77              
78             sub open {
79 0     0 1   my $self = shift;
80 0           $self->is_open(1);
81 0 0         my $mode = @_ ? shift : $self->mode ? $self->mode : '<';
    0          
82 0           $self->mode($mode);
83 0           my $fh;
84 0 0         if ($mode eq '<') {
    0          
85 0           $self->content($self->get->content);
86 0           CORE::open $fh, "<", \ $self->content;
87             }
88             elsif ($mode eq '>') {
89 0           $self->put_content(\ do{ my $x = ''});
  0            
90 0           CORE::open $fh, ">", $self->put_content;
91             }
92 0           $self->io_handle($fh);
93 0           return $self;
94             }
95              
96             sub close {
97 0     0 1   my $self = shift;
98 0 0 0       if ($self->is_open and defined $self->mode and $self->mode eq '>') {
      0        
99 0           $self->content(${$self->put_content});
  0            
100 0           $self->put;
101             }
102 0           $self->SUPER::close;
103             }
104              
105             1;
106             __END__