Randy J Ray


WebService::ISBNDB::Agent::REST - Agent sub-class for the REST protocol


This module should not be directly used by user applications.


This module implements the REST-based communication protocol for getting data from the isbndb.com service. At present, this is the only protocol the service supports.


This class provides the following methods, most of which are restricted to this class and any sub-classes of it that may be written:

parse_authors($ROOT) (R)
parse_books($ROOT) (R)
parse_categories($ROOT) (R)
parse_publishers($ROOT) (R)
parse_subjects($ROOT) (R)

Each of these parses the XML response for the corresponding API call. The $ROOT parameter is a XML::LibXML::Node object, obtained from parsing the XML returned by the service.

Each of these returns a list-reference of objects, even when there is only one result value. All of these methods are restricted to this class and its decendants.

request($OBJ, $ARGS) (R)

Use the LWP::UserAgent object to make a request on the remote service. $OBJ indicates what type of data request is being made, and $ARGS is a hash-reference of arguments to be passed in the request. The return value is an object of the WebService::ISBNDB::Iterator class.

This method is restricted to this class, and is the required overload of the request() method from the parent class (WebService::ISBNDB::Agent).

request_method($OBJ, $ARGS)

Returns the HTTP method (GET, POST, etc.) to use when making the request. The $OBJ and $ARGS parameters may be used to determine the method (in the case of this protocol, they are ignored since GET is always the chosen HTTP method).

request_uri($OBJ, $ARGS)

Returns the complete HTTP URI to use in making the request. $OBJ is used to derive the type of data being fetched, and thus the base URI to use. The key/value pairs in the hash-reference provided by $ARGS are used in the REST protocol to set the query parameters that govern the request.


With no arguments, returns the name of this protocol as a simple string. If an argument is passed, it is tested against the protocol name to see if it is a match, returning a true or false value as appropriate.

The class also implements a constructor method, which is needed to co-operate with the parent class under Class::Std structure. You should generally not have to call the constructor directly:


Calls into the parent constructor with any arguments passed in.


The data returned by this class is only as accurate as the data retrieved from isbndb.com.

The list of results from calling search() is currently limited to 10 items. This limit will be removed in an upcoming release, when iterators are implemented.


WebService::ISBNDB::Agent, WebService::ISBNDB::Iterator, LWP::UserAgent


Randy J. Ray <rjray@blackperl.com>


This module and the code within are released under the terms of the Artistic License 2.0 (http://www.opensource.org/licenses/artistic-license-2.0.php). This code may be redistributed under either the Artistic License or the GNU Lesser General Public License (LGPL) version 2.1 (http://www.opensource.org/licenses/lgpl-license.php).