NAME

HTML::HTML5::Parser::UA - simple web user agent class

SYNOPSIS

 use aliased 'HTML::HTML5::Parser::UA';
 
 my $response = UA->get($url);
 die unless $response->{success};
 
 print $response->{decoded_content};

DESCRIPTION

This is a simple wrapper around HTTP::Tiny and LWP::UserAgent to smooth out the API differences between them. It only supports bog standard get($url) requests.

If LWP::UserAgent is already in memory, this module will use that.

If LWP::UserAgent is not in memory, then this module will use HTTP::Tiny (or direct filesystem access for "file://" URLs).

If LWP::UserAgent is not in memory, and you attempt to request a URL that HTTP::Tiny cannot handle (e.g. an "ftp://" URL), then this module will load LWP::UserAgent and die if it cannot be loaded (e.g. is not installed).

HTML::HTML5::Parser::UA is used by the parse_file method of HTML::HTML5::Parser.

Class Method

get($url, $ua)

Gets the URL and returns a hashref similar to HTTP::Tiny's hashrefs, but with an additional decoded_content key, which contains the response body, decoded into a Perl character string (not a byte string).

If $ua is given (it's optional), then this user agent will be used to perform the actual request. Must be undef or an LWP::UserAgent object (or a subclass) or an HTTP::Tiny object (or a subclass).

Package Variable

$HTML::HTML5::Parser::NO_LWP

If true, avoids using LWP::UserAgent.

MOTIVATION

LWP::UserAgent is a good piece of software but it has a dependency on HTML::Parser. HTML::Parser is only used to provide one fairly esoteric feature, which this package doesn't make use of. (It's the parse_head option.)

Because of that, I don't especially want HTML::HTML5::Parser to have a dependency on LWP::UserAgent. Hence this module.

SEE ALSO

HTML::HTML5::Parser.

AUTHOR

Toby Inkster, <tobyink@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2012 by Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.