use Moose;
has 'ua' => (
is => 'ro',
isa => 'WWW::WTF::UserAgent::WebKit2::Browser',
lazy => 1,
default => sub {
my $self = shift;
my $wkit = WWW::WTF::UserAgent::WebKit2::Browser->new( callbacks => $self->callbacks );
$wkit->init;
return $wkit;
},
);
has 'callbacks' => (
is => 'ro',
isa => 'HashRef',
lazy => 1,
default => sub { {} },
);
sub get {
my ($self, $uri) = @_;
confess "$uri is not an URI object" unless (ref($uri) =~ /^URI::https?$/);
$self->ua->open($uri->as_string);
my $resource = $self->ua->view->get_main_resource();
my $response = $resource->get_response;
my $http_resource = WWW::WTF::HTTPResource->new(
headers => HTTP::Headers->new( Content_Type => $response->get_mime_type ),
content => WWW::WTF::HTTPResource::Content->new( data => $self->ua->get_html_source ),
successful => ($response->get_status_code =~ m/^2\d\d$/ ? 1 : 0),
request_uri => $uri,
);
return $http_resource;
}
sub recurse {
my ($self, $sitemap_uri) = @_;
confess "$sitemap_uri is not an URI object" unless (ref($sitemap_uri) =~ /^URI::https?$/);
return WWW::WTF::UserAgent::WebKit2::Iterator->new( sitemap_uri => $sitemap_uri, ua => $self );
}
__PACKAGE__->meta->make_immutable;
1;