diff options
-rw-r--r-- | lib/Web/Response.pm | 19 | ||||
-rw-r--r-- | t/response-body.t | 2 | ||||
-rw-r--r-- | t/response-cookie.t | 2 | ||||
-rw-r--r-- | t/response-new.t | 16 |
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"; } |