diff options
author | franck cuny <franck@lumberjaph.net> | 2010-11-17 11:45:27 +0100 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-11-17 11:45:27 +0100 |
commit | ea623826396c3b028756e0f883646a4e4c817e25 (patch) | |
tree | 96d9368482a860d78cb7b03f63c3a80595d304cc | |
parent | mock call finalize (diff) | |
download | net-http-spore-ea623826396c3b028756e0f883646a4e4c817e25.tar.gz |
try / catch error on middlewares
-rw-r--r-- | lib/Net/HTTP/Spore/Role/Request.pm | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/Net/HTTP/Spore/Role/Request.pm b/lib/Net/HTTP/Spore/Role/Request.pm index a0d61b1..0af15f7 100644 --- a/lib/Net/HTTP/Spore/Role/Request.pm +++ b/lib/Net/HTTP/Spore/Role/Request.pm @@ -46,11 +46,19 @@ sub _execute_middlewares_on_response { my ($self, $response, @middlewares) = @_; foreach my $mw ( reverse @middlewares ) { - my $res = $mw->($response); + my ($res, $error); + try { + $res = $mw->($response); + }catch{ + $error = 1; + $response->code(599); + $response->body({error => $_, body=>$response->body}); + }; $response = $res if ( defined $res && Scalar::Util::blessed($res) && $res->isa('Net::HTTP::Spore::Response') ); + last if $error; } $response; |