package Furl::Response; use strict; use warnings; use utf8; use Furl::Headers; sub new { my ($class, $minor_version, $code, $message, $headers, $content) = @_; bless { minor_version => $minor_version, code => $code, message => $message, headers => Furl::Headers->new($headers), content => $content }, $class; } # accessors sub code { shift->{code} } sub message { shift->{message} } sub headers { shift->{headers} } sub content { shift->{content} } # alias sub status { shift->code() } sub body { shift->content() } # shorthand sub content_length { shift->headers->content_length() } sub content_type { shift->headers->content_type() } sub content_encoding { shift->headers->content_encoding() } sub header { shift->headers->header(@_) } sub protocol { "HTTP/1." . $_[0]->{minor_version} } sub as_http_response { my ($self) = @_; require HTTP::Response; my $res = HTTP::Response->new( $self->code, $self->message, [ $self->headers->flatten ], $self->content ); $res->protocol($self->protocol); return $res; } sub is_success { substr( $_[0]->code, 0, 1 ) eq '2' } sub status_line { $_[0]->code . ' ' . $_[0]->message } 1; __END__ =head1 NAME Furl::Response - Response object for Furl =head1 SYNOPSIS my $res = Furl::Response->new($minor_version, $code, $message, $headers, $content); print $res->status, "\n"; =head1 DESCRIPTION This is a HTTP response object in Furl. =head1 CONSTRUCTOR my $res = Furl::Response->new($minor_version, $code, $msg, \%headers, $content); =head1 INSTANCE METHODS =over 4 =item $res->code =item $res->status Returns HTTP status code. =item $res->message Returns HTTP status message. =item $res->headers Returns instance of L =item $res->content =item $res->body Returns response body in scalar. =item $res->content_length =item $res->content_type =item $res->content_encoding =item $res->header Shorthand to access L. =item $res->protocol $res->protocol(); # => "HTTP/1.1" Returns HTTP protocol in string. =item $res->as_http_response Make instance of L from L. =item $res->is_success Returns true if status code is 2xx. =item $res->status_line $res->status_line() # => "200 OK" Returns status line. =back