NAME

HTTP::Response::Stringable - Makes HTTP::Response objects stringable

VERSION

version 0.0001

SYNOPSIS

my $res = LWP::UserAgent->new->get('http://example.com');
Role::Tiny->apply_roles_to_object($res, 'HTTP::Response::Stringable');
print "$res";

DESCRIPTION

This module is a role that can be applied to HTTP::Response objects to make them stringable.

After applying this role to the response object, you can use it in string context. The resulting string will be of the form:

$res->status_line . "\n" . $res->content

My motivation for creating this module was that I wanted to throw HTTP::Response objects as exceptions, and exception objects should have a string representation so that they can be properly logged. Here is an example use case:

package WidgetFactory;
use Moo;
use LWP::UserAgent;

sub create_widget {
    my $res = LWP::UserAgent->new->post('http://widget-factory/widgets');
    if (not $res->is_success) {
        require Role::Tiny;
        Role::Tiny->apply_roles_to_object($res, 'HTTP::Response::Stringable');
        die $res;
    }
}

# ...

package main;
use WidgetFactory;
use TryCatch;

my $wf = WidgetFactory->new;
try {
    $wf->create_widget();
} catch (HTTP::Response $res) {
    debug "Creating widget failed: $res";
}

AUTHOR

Naveed Massjouni <naveed@vt.edu>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Naveed Massjouni.

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