The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package App::PgCryobit::ShipperFactory::FTPFactory;
use Moose;
extends qw/App::PgCryobit::ShipperFactory/;

use App::PgCryobit::Shipper::FTPShipper;

=head2 build_shipper

This will return a CopyShipper

=cut

sub build_shipper{
    my ($self) = @_;

    my @required = qw/ftp_host ftp_user ftp_password backup_dir/;
    foreach my $req ( @required ){
      unless( $self->config()->{$req} ){
        die "App::PgCryobit::ShipperFactory::FTPFactory - Missing $req in configuration\n";
      }
    }

    my $args = { backup_dir => $self->config()->{backup_dir},
                 ftp_host => $self->config()->{ftp_host},
                 ftp_user => $self->config()->{ftp_user},
                 ftp_password => $self->config()->{ftp_password}
               };
    if( my $port = $self->config()->{ftp_port} ){
      unless( $port =~ /^\d+$/ ){
        die "App::PgCryobit::ShipperFactory::FTPFactory - ftp_port have to be numerical. It is not:$port\n";
      }
      $args->{ftp_port} = $port;
    }

    return App::PgCryobit::Shipper::FTPShipper->new( $args ) ;
}

1;