}
sub timeout { shift->_elem('timeout', @_); }
sub max_size { shift->_elem('max_size', @_); }
sub max_redirect { shift->_elem('max_redirect', @_); }
sub show_progress{ shift->_elem('show_progress', @_); }
sub parse_head {
my $self = shift;
if (@_) {
my $flag = shift;
my $parser;
my $old = $self->set_my_handler("response_header", $flag ? sub {
my($response, $ua) = @_;
require HTML::HeadParser;
$parser = HTML::HeadParser->new($response->{'_headers'});
$parser->xml_mode(1) if $response->content_is_xhtml;
$parser->utf8_mode(1) if $] >= 5.008 && $HTML::Parser::VERSION >= 3.40;
push(@{$response->{handlers}{response_data}}, sub {
return unless $parser;
$parser->parse($_[3]) or undef($parser);
});
} : undef,
m_media_type => "html",
);
return !!$old;
}
else {
return !!$self->get_my_handler("response_header");
}
}
sub cookie_jar {
my $self = shift;
my $old = $self->{cookie_jar};
if (@_) {
my $jar = shift;
if (ref($jar) eq "HASH") {
require HTTP::Cookies;
$jar = HTTP::Cookies->new(%$jar);
}
$self->{cookie_jar} = $jar;
$self->set_my_handler("request_prepare",
$jar ? sub { $jar->add_cookie_header($_[0]); } : undef,
);
$self->set_my_handler("response_done",
$jar ? sub { $jar->extract_cookies($_[0]); } : undef,
);
}
$old;
}
sub default_headers {
my $self = shift;
my $old = $self->{def_headers} ||= HTTP::Headers->new;
if (@_) {
$self->{def_headers} = shift;
}
return $old;
}
sub default_header {
my $self = shift;
return $self->default_headers->header(@_);
}
sub _agent { "libwww-perl/$LWP::VERSION" }
sub agent {
my $self = shift;
if (@_) {
my $agent = shift;
if ($agent) {
$agent .= $self->_agent if $agent =~ /\s+$/;
}
else {
undef($agent)
}
return $self->default_header("User-Agent", $agent);
}
return $self->default_header("User-Agent");
}
sub from { # legacy
my $self = shift;
return $self->default_header("From", @_);
}
sub conn_cache {
my $self = shift;
my $old = $self->{conn_cache};
if (@_) {
my $cache = shift;
if (ref($cache) eq "HASH") {
require LWP::ConnCache;
$cache = LWP::ConnCache->new(%$cache);
=7= |