HTTP::Thin::UserAgent - A Thin UserAgent around some useful modules.


version 0.016


    use HTTP::Thin::UserAgent;

    my $favorites = http(GET '')->as_json->decoded_content;

    my $results = http(GET '')->scraper(
        scraper {
            process '.findResult', 'results[]' => scraper {
                process '.result_text', text => 'TEXT';
                process '.result_text > a', link => '@href';


HTTP::Thin::UserAgent provides a layer over HTTP::Thin. It exposes an functional API that hopefully makes writing HTTP clients easier.



A function that returns a new HTTP::Thin::UserAgent::Client object, which does the actual work for the request. You pas in an HTTP::Request object.


Exports from HTTP::Request::Common to make generating HTTP::Request objects easier.

scraper / process

Exports from Web::Scraper to assist in building scrapers for HTML documents.


HTTP::Thin::UserAgent::Client has the following methods.

response( )

Returns the HTTP::Response object returned by HTTP::Thin

as_json( $data )

This sets the request up to use application/json and then adds a decoder to decode the HTTP::Response content. If data is passed in it will be encoded into JSON and supplied in as the request data.

scraper( $scraper )

Sets up the request to process the response through the Web::Scraper object supplied. It will return the data (if any) returned by the scraper object.

decoded_content( )

Returns the decoded content, currently we only support HTML (in which case we return scraped content) and JSON (in which case we decode the JSON using JSON::Any).

tree( )

Returns a HTML::TreeBuilder::XPath object.

find( $exp )

Takes a CSS or XPath expression and returns an arrayref of HTML::TreeBuilder::XPath nodes.

on_error( $coderef )

A code reference that if there is an error in fetching the HTTP response handles that error. $_ will be set to the error being handled. Exceptions are HTTP::Throwable objects for server side errors.



When set to true the TRACE variable will cause HTTP::Thin::UserAgent::Client to emit dumps of the request and response objects as it processes them. This is to help you in debugging the HTTP requests.


Chris Prather <>


This software is copyright (c) 2013 by Chris Prather.

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