]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Net.pl
really?
[infobot.git] / src / Net.pl
index fb1959cebab756fec93b7918d8c991904192b964..1cd24abdc9dd402c55e5d5546af6ace8014dff85 100644 (file)
@@ -5,94 +5,98 @@
 #  Created: 20000309
 #
 
-if (&IsParam("useStrict")) { use strict; }
+use strict;
 
-use vars qw(%ftp);
+use vars qw(%ftp %param);
 
 # Usage: &ftpGet($host,$dir,$file,[$lfile]);
 sub ftpGet {
-    my ($host,$dir,$file,$lfile) = @_;
-    my $verbose_ftp    = 1;
+    my ( $host, $dir, $file, $lfile ) = @_;
+    my $verbose_ftp = 1;
 
-    return unless &loadPerlModule("Net::FTP");
+    return unless &loadPerlModule('Net::FTP');
 
     &status("FTP: opening connection to $host.") if ($verbose_ftp);
-    my $ftp = Net::FTP->new($host,
-       'Timeout'       => 1*60,
+    my $ftp = Net::FTP->new(
+        $host,
+        'Timeout' => 1 * 60,
 ###    'BlockSize'     => 1024,        # ???
     );
 
-    if ($@) {
-       &ERROR("FTP: $@.");
-       return;
-    }
+    return if ($@);
 
     # login.
-    if ($ftp->login()) {
-       &status("FTP: logged in successfully.") if ($verbose_ftp);
-    } else {
-       &status("FTP: login failed.");
-       $ftp->quit();
-       return 0;
+    if ( $ftp->login() ) {
+        &status('FTP: logged in successfully.') if ($verbose_ftp);
+    }
+    else {
+        &status('FTP: login failed.');
+        $ftp->quit();
+        return 0;
     }
 
     # change directories.
-    if ($ftp->cwd($dir)) {
-       &status("FTP: changed dirs to $dir.") if ($verbose_ftp);
-    } else {
-       &status("FTP: cwd dir ($dir) does not exist.");
-       $ftp->quit();
-       return 0;
+    if ( $ftp->cwd($dir) ) {
+        &status("FTP: changed dirs to $dir.") if ($verbose_ftp);
+    }
+    else {
+        &status("FTP: cwd dir ($dir) does not exist.");
+        $ftp->quit();
+        return 0;
     }
 
     # get the size of the file.
-    my ($size, $lsize);
-    if ($size = $ftp->size($file)) {
-       &status("FTP: file size is $size") if ($verbose_ftp);
-       my $thisfile    = $file || $lfile;
-
-       if ( -f $thisfile) {
-           $lsize      = -s $thisfile;
-           if ($_ != $lsize) {
-               &status("FTP: local size is $lsize; downloading.") if ($verbose_ftp);
-           } else {
-               &status("FTP: same size; skipping.");
-               &system("touch $thisfile");     # lame hack.
-               $ftp->quit();
-               return 1;
-           }
-       }
-    } else {
-       &status("FTP: file does not exist.");
-       $ftp->quit();
-       return 0;
-    }
-
-    my $start_time = &gettimeofday();
-    if (defined $lfile) {
-       &status("FTP: getting $file as $lfile.") if ($verbose_ftp);
-       $ftp->get($file,$lfile);
-    } else {
-       &status("FTP: getting $file.") if ($verbose_ftp);
-       $ftp->get($file);
-    }
-
-    if (defined $lsize) {
-       &DEBUG("FTP: locsize => '$lsize'.");
-       if ($size != $lsize) {
-           &WARN("FTP: downloaded file seems truncated. FIXME.");
-       }
-    }
-
-    my $delta_time = &gettimeofday() - $start_time;
-    if ($delta_time > 0 and $verbose_ftp) {
-       &status(sprintf("FTP: %.02f sec to complete.", $delta_time));
-       my ($rateunit,$rate) = ("B", $size / $delta_time);
-       if ($rate > 1024) {
-           $rate /= 1024;
-           $rateunit = "kB";
-       }
-       &status(sprintf("FTP: %.01f ${rateunit}/sec.", $rate));
+    my ( $size, $lsize );
+    if ( $size = $ftp->size($file) ) {
+        &status("FTP: file size is $size") if ($verbose_ftp);
+        my $thisfile = $file || $lfile;
+
+        if ( -f $thisfile ) {
+            $lsize = -s $thisfile;
+            if ( $_ != $lsize ) {
+                &status("FTP: local size is $lsize; downloading.")
+                  if ($verbose_ftp);
+            }
+            else {
+                &status('FTP: same size; skipping.');
+                system("touch $thisfile");    # lame hack.
+                $ftp->quit();
+                return 1;
+            }
+        }
+    }
+    else {
+        &status('FTP: file does not exist.');
+        $ftp->quit();
+        return 0;
+    }
+
+    my $start_time = &timeget();
+    if ( defined $lfile ) {
+        &status("FTP: getting $file as $lfile.") if ($verbose_ftp);
+        $ftp->get( $file, $lfile );
+    }
+    else {
+        &status("FTP: getting $file.") if ($verbose_ftp);
+        $ftp->get($file);
+    }
+
+    if ( defined $lsize ) {
+        &DEBUG("FTP: locsize => '$lsize'.");
+        if ( $size != $lsize ) {
+            &FIXME('FTP: downloaded file seems truncated.');
+        }
+    }
+
+    my $delta_time = &timedelta($start_time);
+    if ( $delta_time > 0 and $verbose_ftp ) {
+        &status( sprintf( 'FTP: %.02f sec to complete.', $delta_time ) );
+        my ( $rateunit, $rate ) = ( 'B', $size / $delta_time );
+        if ( $rate > 1024 ) {
+            $rate /= 1024;
+            $rateunit = 'kB';
+        }
+        &status( sprintf( "FTP: %.01f ${rateunit}/sec.", $rate ) );
     }
 
     $ftp->quit();
@@ -102,48 +106,53 @@ sub ftpGet {
 
 # Usage: &ftpList($host,$dir);
 sub ftpList {
-    my ($host,$dir) = @_;
+    my ( $host, $dir ) = @_;
     my $verbose_ftp = 1;
 
-    return unless &loadPerlModule("Net::FTP");
+    return unless &loadPerlModule('Net::FTP');
 
     &status("FTP: opening connection to $host.") if ($verbose_ftp);
-    my $ftp = Net::FTP->new($host,'Timeout'=>60);
+    my $ftp = Net::FTP->new( $host, 'Timeout' => 60 );
 
-    if ($@) {
-###    &ERROR("FTP: $@.");
-       return;
-    }
+    return if ($@);
 
     # login.
-    if ($ftp->login()) {
-       &status("FTP: logged in successfully.") if ($verbose_ftp);
-    } else {
-       &status("FTP: login failed.");
-       $ftp->quit();
-       return;
+    if ( $ftp->login() ) {
+        &status('FTP: logged in successfully.') if ($verbose_ftp);
+    }
+    else {
+        &status('FTP: login failed.');
+        $ftp->quit();
+        return;
     }
 
     # change directories.
-    if ($ftp->cwd($dir)) {
-       &status("FTP: changed dirs to $dir.") if ($verbose_ftp);
-    } else {
-       &status("FTP: cwd dir ($dir) does not exist.");
-       $ftp->quit();
-       return;
-    }
-
-    &status("FTP: doing ls.") if ($verbose_ftp);
-    foreach ($ftp->dir()) {
-       # modes d uid gid size month day time file.
-       if (/^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+) (\S{3})\s+(\d+) \d+:\d+ (.*)$/) {
-           # name = size.
-           $ftp{$8} = $5;
-       } else {
-           &DEBUG("FTP: UNKNOWN  => '$_'.");
-       }
-    }
-    &status("FTP: ls done. ". scalar(keys %ftp) ." entries.");
+    if ( $ftp->cwd($dir) ) {
+        &status("FTP: changed dirs to $dir.") if ($verbose_ftp);
+    }
+    else {
+        &status("FTP: cwd dir ($dir) does not exist.");
+        $ftp->quit();
+        return;
+    }
+
+    &status('FTP: doing ls.') if ($verbose_ftp);
+    foreach ( $ftp->dir() ) {
+
+        # modes d uid gid size month day time file.
+        if (
+/^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+) (\S{3})\s+(\d+) \d+:\d+ (.*)$/
+          )
+        {
+
+            # name = size.
+            $ftp{$8} = $5;
+        }
+        else {
+            &DEBUG("FTP: UNKNOWN  => '$_'.");
+        }
+    }
+    &status( 'FTP: ls done. ' . scalar( keys %ftp ) . ' entries.' );
     $ftp->quit();
 
     return %ftp;
@@ -151,57 +160,68 @@ sub ftpList {
 
 ### LWP.
 # Usage: &getURL($url, [$post]);
+# TODO: rename this to getHTTP
 sub getURL {
-    my ($url,$post) = @_;
-    my ($ua,$res,$req);
+    my ( $url, $post ) = @_;
+    my ( $ua, $res, $req );
 
-    return unless &loadPerlModule("LWP::UserAgent");
+    return unless &loadPerlModule('LWP::UserAgent');
 
     $ua = new LWP::UserAgent;
-    $ua->proxy('http', $param{'httpProxy'}) if &IsParam("httpProxy");
+    $ua->proxy( 'http', $param{'httpProxy'} ) if &IsParam('httpProxy');
 
-    if (defined $post) {
-       $req = new HTTP::Request('POST',$url);
-       $req->content_type('application/x-www-form-urlencoded');
-       $req->content($post);
-    } else {
-       $req = new HTTP::Request('GET',$url);
+    if ( defined $post ) {
+        $req = new HTTP::Request( 'POST', $url );
+        $req->content_type('application/x-www-form-urlencoded');
+        $req->content($post);
+    }
+    else {
+        $req = new HTTP::Request( 'GET', $url );
     }
 
     &status("getURL: getting '$url'");
     my $time = time();
     $res = $ua->request($req);
-    my $size = length($res->content);
-    if ($size and time - $time) {
-       my $rate = int( $size/1000/(time - $time) );
-       &status("getURL: Done (took ".&Time2String(time - $time).", $rate k/sec)");
+    my $size = length( $res->content );
+    if ( $size and time - $time ) {
+        my $rate = int( $size / 1000 / ( time - $time ) );
+        &status('getURL: Done (took '
+              . &Time2String( time - $time )
+              . ", $rate k/sec)" );
     }
 
     # return NULL upon error.
-    return unless ($res->is_success);
+    return unless ( $res->is_success );
 
-    return(split '\n', $res->content);
+    return ( split '\n', $res->content );
 }
 
 sub getURLAsFile {
-    my ($url,$file) = @_;
-    my ($ua,$res,$req);
+    my ( $url, $file ) = @_;
+    my ( $ua, $res, $req );
+    my $time = time();
 
-    return unless &loadPerlModule("LWP::Simple");
+    unless ( &loadPerlModule('LWP::UserAgent') ) {
+        &::DEBUG('getURLAsFile: LWP::UserAgent not installed');
+        return;
+    }
 
-### PROXY NOT SUPPORTED WITH SIMPLE?
-###    $ua->proxy('http', $param{'httpProxy'}) if &IsParam("httpProxy");
-    my $time   = time();
+    $ua = new LWP::UserAgent;
+    $ua->proxy( 'http', $param{'httpProxy'} ) if &IsParam('httpProxy');
+    $req = HTTP::Request->new( 'GET', $url );
     &status("getURLAsFile: getting '$url' as '$file'");
-    my $retval = getstore($url, $file);
-    my $delta_time     = time() - $time;
+    $res = $ua->request( $req, $file );
+
+    my $delta_time = time() - $time;
     if ($delta_time) {
-       my $size = -s $file || 0;
-       my $rate = int($size / $delta_time / 1024);
-       &status("getURLAsFile: Done. ($rate kB/sec)");
+        my $size = -s $file || 0;
+        my $rate = int( $size / $delta_time / 1024 );
+        &status("getURLAsFile: Done. ($rate kB/sec)");
     }
 
-    return $retval;
+    return $res;
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80