FirstGoodURL






Pair Networks
FirstGoodURL

NAME

FirstGoodURL - determines first successful URL in list

SYNOPSIS

  use FirstGoodURL;
  use strict;
  
  my @URLs = (...);
  my $match;
  
  if ($match = FirstGoodURL->in(@URLs)) {
    print "good URL: $match\n";
  }
  else {
    print "no URL was alive\n";
  }
  
  if ($match = FirstGoodURL->with('image/png')->in(@URLs)) {
    print "PNG found at $match\n";
  }
  else {
    print "no PNG found\n";
  }
  
  if ($match = FirstGoodURL->with(200,204)->in(@URLs)) {
    print "Status: OK or No Content at $match\n";
  }
  else {
    print "no 200/204 found\n";
  }

DESCRIPTION

This module uses the LWP suite to scan through a list of URLs. It determines the first URL that returns a specified status code (with defaults to 200), and optionally, a specified Content-type.

Methods

* FirstGoodURL->in(...)
Scans a list of URLs for a specified response code, and possibly a requisite Content-type (see the with method below)
* FirstGoodURL->with(...)

Sets a Content-type and/or Status requisite value for future calls to in. It is destructive to the previous settings given, so you must send all settings at once.

This is not backward compatible.

The argument list can contain a list of Status response codes, and either a list of Content-type response values or a regex to match acceptable Content-type response values. These can appear in any order. The regex must be a compiled one (formed by using qr//).

This method returns the class name, so that you can daisy-chain calls for readability/snazziness:

  my $match = FirstGoodURL->with(qr/image/)->in(@URLs);

TODO

Here is a listing of things that might be added to future versions.

* Object support (with attributes per object)

AUTHOR

  Jeff "japhy" Pinyan
  CPAN ID: PINYAN
  japhy@pobox.com
  http://www.pobox.com/~japhy/