This is an automated email from the git hooks/post-receive script. js pushed a commit to annotated tag v0.08 in repository libdancer-plugin-rest-perl.
commit 708b3f0269a3a5f26c031097196a205b6997d62d Author: Yanick Champoux <yan...@babyl.dyndns.org> Date: Mon Mar 3 14:31:56 2014 -0500 reset the serializer once done --- lib/Dancer/Plugin/REST.pm | 11 +++++++++++ t/default-serializer.t | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/lib/Dancer/Plugin/REST.pm b/lib/Dancer/Plugin/REST.pm index e9fd152..4d538d6 100644 --- a/lib/Dancer/Plugin/REST.pm +++ b/lib/Dancer/Plugin/REST.pm @@ -15,6 +15,8 @@ my $content_types = { xml => 'application/xml', }; +our $default_serializer; + register prepare_serializer_for_format => sub { my $conf = plugin_setting; my $serializers = ( @@ -28,9 +30,13 @@ register prepare_serializer_for_format => sub { ); hook 'before' => sub { + my $format = params->{'format'}; return unless defined $format; + # remember what was there before + $default_serializer = setting 'serializer'; + my $serializer = $serializers->{$format}; unless (defined $serializer) { return halt( @@ -45,6 +51,11 @@ register prepare_serializer_for_format => sub { my $ct = $content_types->{$format} || setting('content_type'); content_type $ct; }; + + hook after => sub { + # put it back the way it was + set serializer => $default_serializer if $default_serializer; + } }; register resource => sub { diff --git a/t/default-serializer.t b/t/default-serializer.t new file mode 100644 index 0000000..728d1cb --- /dev/null +++ b/t/default-serializer.t @@ -0,0 +1,33 @@ +use strict; +use warnings; + +use Test::More tests => 1; + +{ + use Dancer ':tests'; + use Dancer::Plugin::REST; + + prepare_serializer_for_format; + set serializer => 'XML'; + + get '/foo' => sub { + return { hello => 'world' }; + }; + + get '/foo.:format' => sub { + return { hello => 'world' }; + }; + +} + +use Dancer::Test; + +response_content_like '/foo' => qr/<data/, "default serializer is XML"; + +response_content_like '/foo.json' => qr/"hello"\s*:\s*"world"/, "ask for JSON"; + +response_content_like '/foo' => qr/<data/, "default serializer is still XML"; + + + + -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libdancer-plugin-rest-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits