summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-08-19 09:57:45 -0500
committerJesse Luehrs <doy@tozt.net>2012-08-19 09:57:45 -0500
commitfbeba3e0c7cb53bce4302b4ac206a0f9b169d20f (patch)
treea45874bdda2f9aee3b6b42febf257d6e13e88167
parent721a07c10b628d163bb3595edddf15e16ce87242 (diff)
downloadweb-request-fbeba3e0c7cb53bce4302b4ac206a0f9b169d20f.tar.gz
web-request-fbeba3e0c7cb53bce4302b4ac206a0f9b169d20f.zip
add sugary constructor
-rw-r--r--lib/Web/Response.pm19
-rw-r--r--t/response-body.t2
-rw-r--r--t/response-cookie.t2
-rw-r--r--t/response-new.t16
4 files changed, 26 insertions, 13 deletions
diff --git a/lib/Web/Response.pm b/lib/Web/Response.pm
index 89c0e26..7ab39db 100644
--- a/lib/Web/Response.pm
+++ b/lib/Web/Response.pm
@@ -79,6 +79,25 @@ has _encoding_obj => (
},
);
+sub BUILDARGS {
+ my $class = shift;
+
+ if (@_ == 1 && ref($_[0]) eq 'ARRAY') {
+ return {
+ status => $_[0][0],
+ (@{ $_[0] } > 1
+ ? (headers => $_[0][1])
+ : ()),
+ (@{ $_[0] } > 2
+ ? (content => $_[0][2])
+ : ()),
+ };
+ }
+ else {
+ return $class->SUPER::BUILDARGS(@_);
+ }
+}
+
sub redirect {
my $self = shift;
my ($url, $status) = @_;
diff --git a/t/response-body.t b/t/response-body.t
index 80056fe..57b9154 100644
--- a/t/response-body.t
+++ b/t/response-body.t
@@ -9,7 +9,7 @@ use URI;
use Web::Response;
sub r($) {
- my $res = Web::Response->new(status => 200);
+ my $res = Web::Response->new([200]);
$res->content(@_);
return $res->finalize->[2];
}
diff --git a/t/response-cookie.t b/t/response-cookie.t
index c9d35ee..184723f 100644
--- a/t/response-cookie.t
+++ b/t/response-cookie.t
@@ -8,7 +8,7 @@ use HTTP::Request::Common;
use Web::Response;
my $app = sub {
- my $res = Web::Response->new(status => 200);
+ my $res = Web::Response->new([200]);
$res->cookies->{t1} = { value => "bar", domain => '.example.com', path => '/cgi-bin' };
$res->cookies->{t2} = { value => "xxx yyy", expires => time + 3600 };
diff --git a/t/response-new.t b/t/response-new.t
index d78d1ad..e23d091 100644
--- a/t/response-new.t
+++ b/t/response-new.t
@@ -6,34 +6,28 @@ use Test::More;
use Web::Response;
{
- my $res = Web::Response->new(status => 302);
+ my $res = Web::Response->new([302]);
is $res->status, 302;
}
{
- my $res = Web::Response->new(
- status => 200,
- headers => [ 'Content-Type' => 'text/plain' ],
- );
+ my $res = Web::Response->new([200, ['Content-Type' => 'text/plain']]);
is $res->content_type, 'text/plain';
}
{
- my $res = Web::Response->new(
- status => 200,
- headers => { 'Content-Type' => 'text/plain' },
- );
+ my $res = Web::Response->new([200, ['Content-Type' => 'text/plain']]);
is $res->content_type, 'text/plain';
}
{
- my $res = Web::Response->new(status => 200);
+ my $res = Web::Response->new([200]);
$res->content_type('image/png');
is $res->content_type, 'image/png';
}
{
- my $res = Web::Response->new(status => 200);
+ my $res = Web::Response->new([200]);
$res->header('X-Foo' => "bar");
is $res->header('X-Foo'), "bar";
}