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.