App-Fetchware
view release on metacpan or search on metacpan
lib/App/FetchwareX/HTMLPageSync.pm view on Meta::CPAN
package App::FetchwareX::HTMLPageSync;
our $VERSION = '1.016'; # VERSION: generated by DZP::OurPkgVersion
# ABSTRACT: An App::Fetchware extension that downloads files based on an HTML page.
use strict;
use warnings;
# Enable Perl 6 knockoffs, and use 5.10.1, because smartmatching and other
# things in 5.10 were changed in 5.10.1+.
use 5.010001;
# Use fetchware's API's to help us out.
use App::Fetchware::Util ':UTIL';
use App::Fetchware::Config ':CONFIG';
use App::Fetchware::Fetchwarefile;
use App::Fetchware qw(
:OVERRIDE_NEW
:OVERRIDE_NEW_INSTALL
:OVERRIDE_CHECK_SYNTAX
);
# Local imports.
use File::Copy 'cp';
use File::Path 'remove_tree';
use URI::Split 'uri_split';
use File::Spec 'splitpath';
use Data::Dumper;
use Scalar::Util 'blessed';
# Use App::Fetchware::ExportAPI to specify which App::Fetchware API subroutines
# we are going to "KEEP", import from App::Fetchware, and which API subs we are
# going to "OVERRRIDE", implemente here in this package.
#
# ExportAPI takes care of the grunt work for us by setting our packages @EXPORT
# appropriatly, and even importing Exporter's import() method into our package
# for us, so that our App::Fetchware API subroutines and configuration options
# specified below can be import()ed properly.
use App::Fetchware::ExportAPI
# KEEP or "inherit" new_install, because I want my new_install to just call
# ask_to_install_now_to_test_fetchwarefile(), and App::Fetchware's does that
# already for me. And start() and end() are to create and manage the
# temporary directory for me, so I don't have to worry about polluting the
# current working directory with temporary files.
KEEP => [qw(new_install start end)],
# OVERRIDE everything else.
OVERRIDE =>
[qw(new check_syntax lookup download verify unarchive build install
uninstall upgrade)]
;
# Use App::Fetchware::CreateconfigOptions to build our App::Fetchware
# configuration options for us. These are subroutines with correct prototypes to
# turn a perl code file into something that resembles a configuration file.
use App::Fetchware::CreateConfigOptions
ONE => [qw(
page_name
html_page_url
destination_directory
user_agent
html_treebuilder_callback
download_links_callback
)],
BOOLEAN => [qw(keep_destination_directory)]
;
use Exporter 'import';
our %EXPORT_TAGS = (
TESTING => [qw(
get_html_page_url
get_destination_directory
ask_about_keep_destination_directory
new
new_install
)]
);
our @EXPORT_OK = map {@{$_}} values %EXPORT_TAGS;
sub new {
my ($term, $page_name) = @_;
# Instantiate a new Fetchwarefile object for managing and generating a
( run in 1.259 second using v1.01-cache-2.11-cpan-39bf76dae61 )