Message-Passing-PSGI
view release on metacpan or search on metacpan
lib/Plack/App/Message/Passing.pm view on Meta::CPAN
delete $env->{'psgi.errors'};
delete $env->{'psgix.io'};
my $input_fh = delete $env->{'psgi.input'};
my $input = '';
my $len = 0;
do {
$len = $input_fh->read(my $buf, 4096);
$input .= $buf;
} while ($len);
$env->{'psgi.input'} = $input;
delete $env->{'psgi.streaming'};
$env->{'psgix.message.passing.clientid'} = refaddr($base_env);
$env->{'psgix.message.passing.returnaddress'} = $self->return_address;
$self->output_to->consume(encode_json $env);
return sub {
my $responder = shift;
$self->in_flight->{refaddr($base_env)} = [$base_env, $responder];
}
}
sub to_app {
my $post_data = 'foobar';
open(my $reader, '<', \$post_data) or die $!;
my $errors = '';
open(my $error_writer, '>', \$errors) or die $!;
my $env = {
'psgi.errors' => $error_writer,
'psgi.input' => $reader,
'psgi.nonblocking' => 1,
'psgix.io' => 'bar',
'psgi.streaming' => 'quux',
'PATH_INFO' => '/',
};
my $env_addr = refaddr($env);
ok !exists($app->in_flight->{$env_addr});
my $res = $app->_handle_request($env);
my $response;
$res->(sub { $response = shift() });
ok exists($app->in_flight->{$env_addr});
is $app->output_to->message_count, 1;
( run in 0.244 second using v1.01-cache-2.11-cpan-4d50c553e7e )