File Coverage

blib/lib/WWW/ConfixxBackup.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package WWW::ConfixxBackup;
2              
3 6     6   122824 use 5.006001;
  6         24  
  6         233  
4 6     6   33 use strict;
  6         10  
  6         358  
5 6     6   39 use warnings;
  6         10  
  6         185  
6 6     6   3457 use WWW::ConfixxBackup::Confixx;
  0            
  0            
7             use WWW::ConfixxBackup::FTP;
8              
9             our $VERSION = '0.1001';
10              
11             sub new{
12             my ($class,%args) = @_;
13             my $self = bless {},$class;
14            
15             $self->waiter(120);
16             $self->file_prefix( '' );
17            
18             $self->debug( sub{ print join "\n", @_ } );
19             $self->DEBUG(0);
20            
21             my @unwanted = (qr/login$/, qr/^backup/, qr/download$/, qr/^_/, qr/errstr/);
22            
23             for my $key ( keys %args ){
24             next if grep{ $key =~ $_ }@unwanted;
25             if( my $sub = $self->can( $key ) ){
26             $sub->( $self, $args{$key} );
27             }
28             }
29            
30             return $self;
31             }# new
32              
33             sub http_proxy{
34             my ($self,$proxy) = @_;
35            
36             $self->{_http_proxy} = $proxy if @_ == 2;
37             return $self->{_http_proxy};
38             }
39              
40             sub ftp_user{
41             my ($self,$user) = @_;
42             $self->{ftp_user} = $user if(defined $user);
43             return $self->{ftp_user};
44             }# ftp_user
45              
46             sub ftp_server{
47             my ($self,$server) = @_;
48             $self->{ftp_server} = $server if(defined $server);
49             return $self->{ftp_server};
50             }# ftp_server
51              
52             sub ftp_password{
53             my ($self,$password) = @_;
54             $self->{ftp_password} = $password if(defined $password);
55             return $self->{ftp_password};
56             }#ftp_password
57              
58             sub user{
59             my ($self,$user) = @_;
60             if(defined $user){
61             $self->ftp_user($user);
62             $self->confixx_user($user);
63             }
64             return $self->ftp_user;
65             }# user
66              
67             sub server{
68             my ($self,$server) = @_;
69             if(defined $server){
70             $self->ftp_server($server);
71             $self->confixx_server($server);
72             }
73             return $self->ftp_server;
74             }# server
75              
76             sub password{
77             my ($self,$password) = @_;
78             if(defined $password){
79             $self->ftp_password($password);
80             $self->confixx_password($password);
81             }
82             return $self->ftp_password;
83             }# password
84              
85             sub confixx_user{
86             my ($self,$user) = @_;
87             $self->{confixx_user} = $user if(defined $user);
88             return $self->{confixx_user};
89             }# confixx_user
90              
91             sub confixx_server{
92             my ($self,$server) = @_;
93             $self->{confixx_server} = $server if(defined $server);
94             return $self->{confixx_server};
95             }# confixx_server
96              
97             sub confixx_password{
98             my ($self,$password) = @_;
99             $self->{confixx_password} = $password if(defined $password);
100             return $self->{confixx_password};
101             }# confixx_pasword
102              
103             sub confixx_version{
104             my ($self,$version) = @_;
105             $self->{_confixx_version} = $version if defined $version;
106             return $self->{_confixx_version};
107             }
108              
109             sub available_confixx_versions{
110             my ($self) = @_;
111             return WWW::ConfixxBackup::Confixx->available_confixx_versions;
112             }
113              
114             sub default_confixx_version{
115             return WWW::ConfixxBackup::Confixx->default_version;
116             }
117              
118             sub login{
119             my ($self) = @_;
120             $self->_reset_errstr;
121             $self->ftp_login or $self->_add_errstr('' . $self->ftp_server);
122             $self->confixx_login or $self->_add_errstr('' . $self->confixx_server);
123            
124             unless($self->errstr){
125             return 1;
126             }
127            
128             return;
129             }# login
130              
131             sub ftp_login{
132             my ($self) = @_;
133             $self->{FTP} = WWW::ConfixxBackup::FTP->new(
134             user => $self->ftp_user,
135             password => $self->ftp_password,
136             server => $self->ftp_server,
137             );
138             $self->{FTP}->debug( $self->debug );
139             $self->{FTP}->DEBUG( $self->DEBUG );
140             $self->{FTP}->login;
141            
142             return if ref($self->{FTP}->ftp) ne 'Net::FTP';
143             return 1;
144             }# ftp_login
145              
146             sub confixx_login{
147             my ($self) = @_;
148             $self->{CONFIXX} = WWW::ConfixxBackup::Confixx->new(
149             user => $self->confixx_user,
150             password => $self->confixx_password,
151             server => $self->confixx_server,
152             );
153             $self->{CONFIXX}->debug( $self->debug );
154             $self->{CONFIXX}->DEBUG( $self->DEBUG );
155             $self->{CONFIXX}->proxy( $self->http_proxy ) if $self->http_proxy;
156             $self->{CONFIXX}->login;
157            
158             if( ref($self->{CONFIXX}->mech) ne 'WWW::Mechanize' ){
159             return;
160             }
161             return 1;
162             }# confixx_login
163              
164             sub file_prefix{
165             my ($self,$prefix) = @_;
166            
167             $self->{__prefix} = $prefix if scalar @_ > 1;
168             return $self->{__prefix};
169             }
170              
171             sub backup_download{
172             my ($self,$path) = @_;
173            
174             $path ||= '.';
175             $self->_reset_errstr();
176            
177             unless($self->{CONFIXX}){
178             $self->confixx_login or $self->_add_errstr('Can\'t login to Confixx');
179             }
180            
181             unless($self->{FTP}){
182             $self->ftp_login or $self->_add_errstr('Can\'t login to FTP server');
183             }
184            
185             $self->{CONFIXX}->confixx_version( $self->confixx_version );
186             if(defined $path && $self->{CONFIXX} && $self->{FTP}){
187             $self->{CONFIXX}->backup() or $self->_add_errstr('Can\'t create backup');
188             sleep($self->{WAIT});
189             $self->{FTP}->prefix( $self->file_prefix );
190             $self->{FTP}->download($path) or $self->_add_errstr('Can\'t download');
191             }
192            
193             unless($self->errstr){
194             return 1;
195             }
196            
197             return 0;
198             }# backup_download
199              
200             sub _reset_errstr{
201             my ($self) = @_;
202             $self->{errstr} = '';
203             }
204              
205             sub _add_errstr{
206             my ($self,$msg) = @_;
207             $self->{errstr} .= $msg if(defined $msg);
208             }
209              
210             sub errstr{
211             my ($self) = @_;
212             return $self->{errstr}."\n";
213             }
214              
215             sub waiter{
216             my ($self,$wait) = @_;
217             $self->{WAIT} = $wait if(defined $wait);
218             return $self->{WAIT};
219             }# wait
220              
221             sub detect_version{
222             my ($self) = @_;
223            
224             $self->_reset_errstr;
225            
226             unless($self->{CONFIXX}){
227             $self->confixx_login or
228             $self->add_errstr('Can\'t login to Confixx' . $self->confixx_server);
229             }
230             if($self->{CONFIXX}){
231             $self->{CONFIXX}->_detect_version;
232             my $version = $self->{CONFIXX}->confixx_version;
233             $self->confixx_version( $version );
234             return $version;
235             }
236              
237             return;
238             }
239              
240             sub debug{
241             my ($self,$coderef) = @_;
242            
243             if( @_ == 2 ){
244             $self->DEBUG(1);
245             $self->{__debug} = $coderef;
246             }
247              
248             return $self->{__debug};
249             }
250              
251             sub DEBUG{
252             my ($self,$bool) = @_;
253            
254             if( @_ == 2 ){
255             $self->{__DEBUG} = $bool;
256             $self->{CONFIXX}->DEBUG( $bool ) if $self->{CONFIXX};
257             $self->{FTP}->DEBUG( $bool ) if $self->{FTP};
258             }
259              
260             return $self->{__DEBUG};
261             }
262              
263             sub download{
264             my ($self,$path) = @_;
265            
266             $self->_reset_errstr;
267            
268             unless($self->{FTP}){
269             $self->ftp_login or
270             $self->add_errstr('Can\'t login to FTP server' . $self->ftp_server);
271             }
272             if($self->{FTP}){
273             $self->{FTP}->download($path) or
274             $self->add_errst('Can\'t download backup files');
275             }
276            
277             unless($self->errstr){
278             return 1;
279             }
280             return;
281             }# download
282              
283             sub backup{
284             my ($self) = @_;
285            
286             $self->_reset_errstr;
287            
288             unless($self->{CONFIXX}){
289             $self->confixx_login or
290             $self->add_errstr('Can\'t login to Confixx' . $self->confixx_server);
291             }
292             if($self->{CONFIXX}){
293             $self->{CONFIXX}->confixx_version( $self->confixx_version );
294             $self->{CONFIXX}->backup or
295             $self->add_errstr('Can\'t create backup');
296             }
297            
298             unless($self->errstr){
299             return 1;
300             }
301             return 0;
302             }# backup
303              
304              
305             # Preloaded methods go here.
306              
307             1;
308              
309             __END__