use HTTP::Request;
use HTTP::Request::Common;
use HTTP::Response;
+use Net::FTP;
@ISA = qw( Exporter );
@EXPORT_OK = qw ( upload );
eval "&billco_upload( 'agentnum' => $agentnum, 'date' => $date );";
warn "billco_upload failed: $@\n"
- if ( $@ );
+ if $@;
}
my $agentnum = $opt{agentnum} or die "no agentnum provided\n";
my $url = $conf->config( 'billco-url', $agentnum )
or die "no url for agent $agentnum\n";
+ $url =~ s/^\s+//; $url =~ s/\s+$//;
my $username = $conf->config( 'billco-username', $agentnum, 1 )
or die "no username for agent $agentnum\n";
my $password = $conf->config( 'billco-password', $agentnum, 1 )
or die "no password for agent $agentnum\n";
- my $clicode = $conf->config( 'billco-clicode', $agentnum )
- or die "no clicode for agent $agentnum\n";
+ my $clicode = $conf->config( 'billco-clicode', $agentnum, 1 );
+ #or die "no clicode for agent $agentnum\n";
die "no date provided\n" unless $opt{date};
my $zipfile = "$dir/agentnum$agentnum-$opt{date}.zip";
unlink "agentnum$agentnum-$opt{date}-header.csv",
"agentnum$agentnum-$opt{date}-detail.csv";
- my $ua = new LWP::UserAgent;
- my $res = $ua->request( POST( $url,
- 'Content_Type' => 'form-data',
- 'Content' => [ 'username' => $username,
- 'pass' => $password,
- 'custid' => $username,
- 'clicode' => $clicode,
- 'file1' => [ $zipfile ],
- ],
- )
- );
-
- die "upload failed: ". $res->status_line. "\n"
- unless $res->is_success;
+ if ( $url =~ /^http/i ) {
+
+ my $ua = new LWP::UserAgent;
+ my $res = $ua->request( POST( $url,
+ 'Content_Type' => 'form-data',
+ 'Content' => [ 'username' => $username,
+ 'pass' => $password,
+ 'custid' => $username,
+ 'clicode' => $clicode,
+ 'file1' => [ $zipfile ],
+ ],
+ )
+ );
+
+ die "upload failed: ". $res->status_line. "\n"
+ unless $res->is_success;
+
+ } elsif ( $url =~ /^ftp:\/\/([\w\.]+)(\/.*)$/i ) {
+
+ my($hostname, $path) = ($1, $2);
+
+ my $ftp = new Net::FTP($hostname) #, Passive=>1 )
+ or die "can't connect to $hostname: $@\n";
+ $ftp->login($username, $password)
+ or die "can't login to $hostname: ". $ftp->message."\n";
+ unless ( $ftp->cwd($path) ) {
+ my $msg = "can't cd $path on $hostname: ". $ftp->message. "\n";
+ ( $path eq '/' ) ? warn $msg : die $msg;
+ }
+ $ftp->binary
+ or die "can't set binary mode on $hostname\n";
+
+ $ftp->put($zipfile)
+ or die "can't put $zipfile: ". $ftp->message. "\n";
+
+ $ftp->quit;
+
+ } else {
+ die "unknown scheme in URL $url\n";
+ }
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
'';