NAME
Net::Blossom::Server::Response - Framework-neutral Blossom server response
SYNOPSIS
use Net::Blossom::Server::Response;
my $response = Net::Blossom::Server::Response->json(
{ ok => 1 },
status => 201,
);
my $status = $response->status;
DESCRIPTION
Net::Blossom::Server::Response represents a server response before any PSGI, PAGI, or other gateway adapter turns it into gateway-native output.
Responses may carry scalar bodies, array reference bodies, or stream objects. Gateway adapters are responsible for mapping those body forms to their native output protocol.
CONSTRUCTORS
new
my $response = Net::Blossom::Server::Response->new(%args);
Required status must be an HTTP status code from 100 through 599.
Optional headers defaults to an empty hash reference. Header names are case-insensitive and duplicate case-insensitive names croak. Header values must be defined scalars and must not contain CR or LF.
Optional body defaults to the empty string. It may be a scalar byte string, an array reference of scalar byte strings, or a stream object that provides read or getline.
json
my $response = Net::Blossom::Server::Response->json($data, %opts);
Encodes $data as canonical UTF-8 JSON. status defaults to 200. The response includes Content-Type: application/json and Content-Length unless those headers are supplied in headers.
text
my $response = Net::Blossom::Server::Response->text($body, %opts);
Builds a text response. status defaults to 200. The response includes Content-Type: text/plain; charset=utf-8 and Content-Length unless those headers are supplied in headers.
empty
my $response = Net::Blossom::Server::Response->empty($status, %opts);
Builds an empty response. status defaults to 204. The response includes Content-Length: 0 unless supplied in headers.
redirect
my $response = Net::Blossom::Server::Response->redirect($location, %opts);
Builds a redirect response. status defaults to 307. $location is required. The response includes Location and Content-Length: 0.
error
my $response = Net::Blossom::Server::Response->error($status, $reason, %opts);
Builds an empty error response. $reason, when defined and non-empty, is sent as X-Reason and therefore must not contain CR or LF.
ACCESSORS
status
Returns the HTTP status code.
body
Returns the scalar, array reference, or stream body.
METHODS
headers
my $headers = $response->headers;
Returns a copy hash reference of response headers.
header
my $value = $response->header($name);
Returns a header value using case-insensitive lookup. Returns undef when the header is absent.
header_pairs
my $pairs = $response->header_pairs;
Returns an array reference suitable for PSGI-style [name => value, ...] headers.
body_chunks
my $chunks = $response->body_chunks;
Returns scalar and array reference bodies as an array reference of chunks. Stream bodies croak because they must be consumed by the gateway adapter.