-
Notifications
You must be signed in to change notification settings - Fork 27
/
get_url.tag
78 lines (62 loc) · 1.65 KB
/
get_url.tag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Copyright 2002 Interchange Development Group (http://www.icdevgroup.org/)
# Licensed under the GNU GPL v2. See file LICENSE for details.
# $Id: get_url.tag,v 1.8 2005-02-10 14:38:39 docelic Exp $
UserTag get-url Order url
UserTag get-url AddAttr
UserTag get-url Interpolate
UserTag get-url Version $Revision: 1.8 $
UserTag get-url Routine <<EOR
require LWP::UserAgent;
sub {
my ($url, $opt) = @_;
my $html = '';
my $ua = LWP::UserAgent->new;
my $method = '';
if($opt->{method}) {
$method = $opt->{method};
if("GET HEAD POST PUT" !~ /$method/) {
$method = "GET";
}
}
else { $method = "GET"; }
$method = uc $method;
if($opt->{timeout}) {
my $to = Vend::Config::time_to_seconds($opt->{timeout});
$ua->timeout($to);
}
if($opt->{useragent} ) {
$ua->agent($opt->{useragent});
}
if($opt->{form}) {
$opt->{content} = Vend::Interpolate::escape_form($opt->{form});
}
my $do_content;
if(($opt->{content}) && ("PUT POST" =~ /$method/)) {
$opt->{content_type} ||= 'application/x-www-form-urlencoded';
$do_content = 1;
}
elsif($opt->{content}) {
$url .= $opt->{url} =~ /\?/ ? '&' : '?';
$url .= $opt->{content};
}
my $req = HTTP::Request->new($method, $url);
if($do_content) {
$req->content_type($opt->{content_type});
$req->content($opt->{content});
}
if($opt->{authuser} && $opt->{authpass}) {
$req->authorization_basic($opt->{authuser}, $opt->{authpass});
}
my $res = $ua->request($req);
if ($res->is_success) {
$html .= $res->content;
} else {
$html .= "Failed - " . $res->status_line;
}
if($opt->{strip}) {
$html =~ s/.*<body[^>]*>//si;
$html =~ s:</body>.*::si;
}
return $html;
}
EOR