builder
=>
'NoEnv'
,
writer
=> {
attributes
=> {
output_body_buffer
=> {
is
=>
'rw'
,
},
},
around
=> {
finalize
=>
sub
{
my
$next
=
shift
;
my
(
$self
,
$req
,
$res
) =
@_
;
$self
->output_body_buffer(
''
);
$next
->(
@_
);
$res
->body(
$self
->output_body_buffer );
$res
->as_http_response;
},
},
output_header
=>
sub
{},
write
=>
sub
{
my
(
$self
,
$buffer
) =
@_
;
Carp::carp(
"do not pass the utf8-string as HTTP-Response: '$buffer'"
)
if
Encode::is_utf8(
$buffer
);
$self
->output_body_buffer(
$self
->output_body_buffer .
$buffer
);
},
}
;
sub
run {
my
(
$self
,
$request
,
%args
) =
@_
;
Carp::croak(
'missing request object'
)
unless
$request
;
Carp::croak(
'incorrect request object($request->uri() returns undef)'
)
unless
$request
->uri;
if
(
$request
->method eq
'POST'
) {
Carp::carp(
'missing content-length header'
)
unless
defined
$request
->content_length;
Carp::carp(
'missing content-type header'
)
unless
$request
->content_type;
}
return
$self
->handle_request(
HTTP::Engine::Test::Request->build_request_args(
$request
->uri,
$request
->content,
{
headers
=>
$request
->headers,
method
=>
$request
->method,
protocol
=>
$request
->protocol,
%args
,
},
),
);
}
__INTERFACE__