package LWP::Simple;
use strict;
use vars qw($ua %loop_check $FULL_LWP @EXPORT @EXPORT_OK $VERSION);
require Exporter;
@EXPORT = qw(get head getprint getstore mirror);
@EXPORT_OK = qw($ua);
# I really hate this. I was a bad idea to do it in the first place.
# Wonder how to get rid of it??? (It even makes LWP::Simple 7% slower
# for trivial tests)
use HTTP::Status;
push(@EXPORT, @HTTP::Status::EXPORT);
$VERSION = "5.810";
$FULL_LWP++ if grep {lc($_) eq "http_proxy"} keys %ENV;
sub import
{
my $pkg = shift;
my $callpkg = caller;
if (grep $_ eq '$ua', @_) {
$FULL_LWP++;
_init_ua();
}
Exporter::export($pkg, $callpkg, @_);
}
sub _init_ua
{
require LWP;
require LWP::UserAgent;
require HTTP::Status;
require HTTP::Date;
$ua = new LWP::UserAgent; # we create a global UserAgent object
my $ver = $LWP::VERSION = $LWP::VERSION; # avoid warning
$ua->agent("LWP::Simple/$LWP::VERSION");
$ua->env_proxy;
}
sub get ($)
{
%loop_check = ();
goto \&_get;
}
sub get_old ($)
{
my($url) = @_;
_init_ua() unless $ua;
my $request = HTTP::Request->new(GET => $url);
my $response = $ua->request($request);
return $response->content if $response->is_success;
return undef;
}
sub head ($)
{
my($url) = @_;
_init_ua() unless $ua;
my $request = HTTP::Request->new(HEAD => $url);
my $response = $ua->request($request);
if ($response->is_success) {
return $response unless wantarray;
return (scalar $response->header('Content-Type'),
scalar $response->header('Content-Length'),
HTTP::Date::str2time($response->header('Last-Modified')),
HTTP::Date::str2time($response->header('Expires')),
scalar $response->header('Server'),
);
}
return;
}
sub getprint ($)
{
my($url) = @_;
_init_ua() unless $ua;
my $request = HTTP::Request->new(GET => $url);
local($\) = ""; # ensure standard $OUTPUT_RECORD_SEPARATOR
my $callback = sub { print $_[0] };
if ($^O eq "MacOS") {
$callback = sub { $_[0] =~ s/\015?\012/\n/g; print $_[0] }
}
my $response = $ua->request($request, $callback);
unless ($response->is_success) {
print STDERR $response->status_line, " <URL:$url>\n";
=1= |