#!/usr/bin/perl
# Perl script to fetch recent cURL daily snapshot with LWP
# 30-Dec-2008, by G. Knauf <efash@gmx.net>
my $version = '0.1';

use Getopt::Std;
use LWP::UserAgent;

getopts('dhio:q');

my $url = 'http://cool.haxx.se/curl-daily/';
my $pat = '\nNEWEST\star.bz2\s(.*)\n';

if ($opt_i) {
  print "Script Version            : $version\n";
  print "Perl Version              : $]\n";
  print "Operating System Name     : $^O\n";
  print "LWP::UserAgent.pm Version : ${LWP::UserAgent::VERSION}\n";
  print "LWP.pm Version            : ${LWP::VERSION}\n";
  print ("=" x 78 . "\n");
}

$0 =~ s/\\/\//g;
$0 = substr($0, rindex($0, '/') + 1);
if ($opt_h) {
  printf("Usage:\t%s [-o <outputfile>]\n", $0);
  print "\t-i\tprint version info about used modules\n";
  print "\t-o <outputfile>\tsave response with given file name\n";
  print "\t-q be quiet\n";
  exit;
}

my $ua  = new LWP::UserAgent(agent => "$0/$version");
my $req = new HTTP::Request('GET', $url);
my $res = $ua->request($req);
if (!$res->is_success) {
  die $res->status_line . "\n";
}
if ($res->content =~ /${pat}/) {
  my $file = $opt_o || $1;
  print "Downloading $1 ...\n" if (!$opt_q);
  $req = new HTTP::Request('GET', $url.$1);
  $res = $ua->request($req);
  if (!$res->is_success) {
    die $res->status_line . "\n";
  }
  open(O,">$file") or die "Couldn't open $file: $!";
  binmode O;
  print O $res->content;
  close(O) or die "Couldn't close $file: $!";
}


