Name

get-url — dispatch HTTP request and return response

ATTRIBUTES

Attribute Pos. Req. Default Description
url Yes Yes   URL to fetch.
method     GET Form method. Can be one of GET, POST, HEAD or PUT.
strip     0 If set, delete everything before <body> and after </body> prior to returning contents.
content_type     application/x-www-form-urlencoded MIME content type.
content       CGI to pass. If you want to use this, the form method should be POST or PUT. The list can be ampersand-separated, like fname=Brev&lname=Patterson&state=UT, and to URL-encode the variables themselves, use [filter op=urlencode]. The form, however, does not need to be URL-encoded, see the section called “EXAMPLES”.
authuser       Username to send for authentication.
authpass       Password to send for authentication.
useragent       The User Agent string (in other words, your "browser" identification).
timeout     180 Set timeout for the operation. Timeout can be specified as a valid interval (such as "3 min").
scratch     None Store result in the named scratch variable instead of returning it.
interpolate     0 interpolate output?
hide     0 Hide the tag return value?

DESCRIPTION

Dispatches HTTP request for the URI supplied with the url parameter.

BEHAVIOR

This tag does not appear to be affected by, or affect, the rest of Interchange.

EXAMPLES

Example:

[get-url
  url="valid_url"
  method="POST"
  strip=1
  content_type="application/x-www-form-urlencoded"
  content="name=Brev"
  authuser="username"
  authpass="password"
  useragent="useragent string"
]

[get-url
  url="http://www.icdevgroup.org"
  method=POST
  form=|
    foo=bar
    buz=baz
    boo=The red's the thing.
  |
]

NOTES

[get-url] is just a thin wrapper around LWP::UserAgent. Therefore the default for the timeout parameter is imposed by this module.

AVAILABILITY

get-url is available in Interchange versions:

4.6.0-5.9.0 (git-head)

SOURCE

Interchange 5.9.0:

Source: code/UserTag/get_url.tag
Lines: 87


# Copyright 2002-2007 Interchange Development Group and others
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.  See the LICENSE file for details.
# 
# $Id: get_url.tag,v 1.12 2007-12-05 00:38:03 racke Exp $

UserTag get-url Order        url
UserTag get-url AddAttr
UserTag get-url Interpolate
UserTag get-url Version      $Revision: 1.12 $
UserTag get-url Routine      <<EOR
require LWP::UserAgent;
sub {
my ($url, $opt) = @_;
my $html = '';
my $method;

my $ua = LWP::UserAgent->new;

if($opt->{method}) { 
  $method = uc($opt->{method});
} else {
  $method = 'GET';
}

  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}) {
  if ($method eq 'POST' || $method eq 'PUT') {
    $opt->{content_type} ||= 'application/x-www-form-urlencoded';
    $do_content = 1;
  } 
  else {
    $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;
}

if ($opt->{scratch}) {
  $::Scratch->{$opt->{scratch}} = $html;
  return;
}

return $html;
}
EOR

AUTHORS

Interchange Development Group

SEE ALSO

DocBook! Interchange!