From 1278125ebaeb8f4f94685176d641f53dbe7855ff Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 15 Sep 2010 16:44:57 +0200 Subject: POD --- lib/Net/HTTP/Spore/Response.pm | 144 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 136 insertions(+), 8 deletions(-) (limited to 'lib/Net/HTTP/Spore/Response.pm') diff --git a/lib/Net/HTTP/Spore/Response.pm b/lib/Net/HTTP/Spore/Response.pm index d695dfa..4667e08 100644 --- a/lib/Net/HTTP/Spore/Response.pm +++ b/lib/Net/HTTP/Spore/Response.pm @@ -1,5 +1,7 @@ package Net::HTTP::Spore::Response; +# ABSTRACT: Portable HTTP Response object for SPORE response + use strict; use warnings; @@ -11,20 +13,19 @@ sub new { my ( $class, $rc, $headers, $body ) = @_; my $self = bless {}, $class; + $self->status($rc) if defined $rc; - if (defined $body) { - $self->body($body); - $self->raw_body($body); - } - $self->headers($headers || []); + $self->body($body) if defined $body; + $self->headers( $headers || [] ); $self; } -sub code { shift->status(@_) } -sub content { shift->body(@_) } - +sub code { shift->status(@_) } +sub content { shift->body(@_) } +sub env { shift->request->env } sub content_type { shift->headers->content_type(@_) } sub content_length { shift->headers->content_length(@_) } +sub location { shift->header->header( 'Location' => @_ ) } sub status { my $self = shift; @@ -40,6 +41,9 @@ sub body { my $self = shift; if (@_) { $self->{body} = shift; + if ( !defined $self->{raw_body} ) { + $self->{raw_body} = $self->{body}; + } } else { return $self->{body}; @@ -101,3 +105,127 @@ sub finalize { } 1; +__END__ + +=head1 SYNOPSIS + + use Net:HTTP::Spore::Response; + + my $response = Net::HTTP::Spore::Response->new( + 200, ['Content-Type', 'application/json'], '{"foo":1}'; + ); + $response->request($request); + +=head1 DESCRIPTION + +Net::HTTP::Spore::Response create a HTTP response + +=head1 METHODS + +=over 4 + +=item new + + my $res = Net::HTTP::Spore::Response->new; + my $res = Net::HTTP::Spore::Response->new($status); + my $res = Net::HTTP::Spore::Response->new($status, $headers); + my $res = Net::HTTP::Spore::Response->new($status, $headers, $body); + +Creates a new Net::HTTP::Spore::Response object. + +=item code + +=item status + + $res->status(200); + my $status = $res->status; + +Gets or sets the HTTP status of the response + +=item env + + $res->env($env); + my $env = $res->env; + +Gets or sets the environment for the response. Shortcut to C<< $res->request->env >> + +=item content + +=item body + + $res->body($body); + my $body = $res->body; + +Gets or sets the body for the response + +=item raw_body + + my $raw_body = $res->raw_body + +The raw_body value is the same as body when the body is sets for the first time. + +=item content_type + + $res->content_type('application/json'); + my $ct = $res->content_type; + +Gets or sets the content type of the response body + +=item content_length + + $res->content_length(length($body)); + my $cl = $res->content_length; + +Gets or sets the content type of the response body + +=item location + + $res->location('http://example.com'); + my $location = $res->location; + +Gets or sets the location header for the response + +=item request + + $res->request($request); + $request = $res->request; + +Gets or sets the HTTP request that created the current HTTP response. + +=item headers + + $headers = $res->headers; + $res->headers(['Content-Type' => 'application/json']); + +Gets or sets HTTP response headers. + +=item header + + my $cl = $res->header('Content-Length'); + $res->header('Content-Type' => 'application/json'); + +Shortcut for C<< $res->headers->header >>. + +=item finalise + + my $res = Net::HTTP::Response->new($status, $headers, $body); + say "http status is ".$res->[0]; + +Return an arrayref: + +=over 2 + +=item status + +The first element of the array ref is the HTTP status + +=item headers + +The second element is an arrayref containing the list of HTTP headers + +=item body + +The third and final element is the body + +=back + -- cgit v1.2.3