App-SimpleBackuper
view release on metacpan or search on metacpan
local/lib/perl5/Net/SFTP/Foreign/Compat.pm view on Meta::CPAN
sub do_realpath { shift->SUPER::realpath(@_) }
sub do_read {
my $sftp = shift;
my $read = $sftp->SUPER::sftpread(@_);
$sftp->_warn_error;
if (wantarray) {
return ($read, $sftp->status);
}
else {
return $read
}
}
sub _gen_do_and_status {
my $method = "SUPER::" . shift;
return sub {
my $sftp = shift;
$sftp->$method(@_);
$sftp->_warn_error;
$sftp->status;
}
}
*do_write = _gen_do_and_status('sftpwrite');
*do_close = _gen_do_and_status('close');
*do_setstat = _gen_do_and_status('setstat');
*do_fsetstat = _gen_do_and_status('setstat');
*do_remove = _gen_do_and_status('remove');
*do_rename = _gen_do_and_status('rename');
*do_mkdir = _gen_do_and_status('mkdir');
*do_rmdir = _gen_do_and_status('rmdir');
sub _rebless_attrs {
my $a = shift;
if ($a) {
bless $a, ( $supplant
? "Net::SFTP::Attributes"
: "Net::SFTP::Foreign::Attributes::Compat" );
}
$a;
}
sub _gen_do_stat {
my $name = shift;
my $method = "SUPER::$name";
return sub {
croak '$Usage: $sftp->'.$name.'($local, $remote, $cb)' if @_ != 2;
my $sftp = shift;
if (my $a = $sftp->$method(@_)) {
return _rebless_attrs($a);
}
else {
$sftp->_warn_error;
return undef;
}
}
}
*do_lstat = _gen_do_stat('lstat');
*do_fstat = _gen_do_stat('fstat');
*do_stat = _gen_do_stat('stat');
1;
__END__
=head1 NAME
Net::SFTP::Foreign::Compat - Adapter for Net::SFTP compatibility
=head1 SYNOPSIS
use Net::SFTP::Foreign::Compat;
my $sftp = Net::SFTP::Foreign::Compat->new($host);
$sftp->get("foo", "bar");
$sftp->put("bar", "baz");
use Net::SFTP::Foreign::Compat ':supplant';
my $sftp = Net::SFTP->new($host);
=head1 DESCRIPTION
This package is a wrapper around L<Net::SFTP::Foreign> that provides
an API (mostly) compatible with that of L<Net::SFTP>.
Methods on this package are identical to those in L<Net::SFTP> except
that L<Net::SFTP::Foreign::Attributes::Compat> objects have to be used
instead of L<Net::SFTP::Attributes>.
If the C<:supplant> tag is used, this module installs also wrappers on
the C<Net::SFTP> and L<Net::SFTP::Attributes> packages so no other
parts of the program have to modified in order to move from Net::SFTP
to Net::SFTP::Foreign.
=head2 Setting defaults
The hash C<%Net::SFTP::Foreign::DEFAULTS> can be used to set default
values for L<Net::SFTP::Foreign> methods called under the hood and
otherwise not accessible through the Net::SFTP API.
The entries currently supported are:
=over
=item new => \@opts
extra options passed to Net::SFTP::Foreign constructor.
=item get => \@opts
extra options passed to Net::SFTP::Foreign::get method.
=item put => \@opts
extra options passed to Net::SFTP::Foreign::put method.
=item ls => \@opts
extra options passed to Net::SFTP::Foreign::ls method.
( run in 2.667 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )