diff options
Diffstat (limited to 'lib/SlackBuild/Archive/Extractor/HTTP.pm')
-rw-r--r-- | lib/SlackBuild/Archive/Extractor/HTTP.pm | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/lib/SlackBuild/Archive/Extractor/HTTP.pm b/lib/SlackBuild/Archive/Extractor/HTTP.pm index 0d72916..4676d95 100644 --- a/lib/SlackBuild/Archive/Extractor/HTTP.pm +++ b/lib/SlackBuild/Archive/Extractor/HTTP.pm @@ -2,6 +2,7 @@ package SlackBuild::Archive::Extractor::HTTP; use strict; use warnings; use parent 'SlackBuild::Archive::Extractor'; +use SlackBuild::Download; use HTML::Parser; use File::Basename; use File::Temp; @@ -13,15 +14,15 @@ sub extract { my $self = shift; my $dst = $self->destdir; - + my $result = new SlackBuild::Download($self->archive); unless ($self->_html_list($self->tempfile)) { - return $self->error("$self: bad index file"); + $self->logger->error($self->archive . ": bad index file"); + return $result; } + + return $result unless $self->archive->verify; - return 0 unless $self->archive->verify; - - return $self->archive->iterate(sub { - my $file = shift; + for (my $i = 0; my $file = $self->archive->dir($i); $i++) { my $subdir = dirname($file); my $dir = File::Spec->catfile($dst, $subdir); unless (-d $dir) { @@ -35,27 +36,26 @@ sub extract { $self->error("can't create $file: $message"); } } - return 0; + return $result; } } my $uri = $self->archive->new_abs($file); my ($dh,$tmp) = File::Temp::tempfile(DIR => $dir, UNLINK => 1); chmod 0644, $dh; unless ($uri->download($tmp)) { - return $self->error("can't download $uri: " - . $uri->download_status); - } + return $result; + } my $destfile = File::Spec->catfile($dst, $file); - if ($uri->downloaded_html && $self->_html_list($tmp, $file)) { + if ($result->is_html && $self->_html_list($tmp, $file)) { ; } else { rename $tmp, $destfile - or $self->error("can't rename $tmp to $destfile: $!"); + or $self->logger->error("can't rename $tmp to $destfile: $!"); } close $dh; - return 1; - }); - return 1; + } + $result->success(1); + return $result; } sub _html_list { |