package Plack::Middleware::JSONParser;
use strict;
use warnings;
use JSON;
use Hash::MultiValue;
use Plack::Request;
our $VERSION = "0.02";
use parent 'Plack::Middleware';
sub call {
my ($self,
m{\Aapplication/json}o) {
my $req = Plack::Request->new( $env );
my $raw_body = $req->raw_body();
return $self->app->($env) unless ($raw_body);
my $json;
{
local $@;
$json = eval { decode_json($raw_body) };
if ($@) {
die $@ if $self->{die_when_failed};
$env->{'plack.middleware.jsonparser.error'} = $@;