Merge branch 'add-the-plugin'

releases
Yanick Champoux 2023-11-12 20:55:33 -05:00
commit 83e2f01add
4 changed files with 62 additions and 1 deletions

View File

@ -1,5 +1,52 @@
use 5.38.0;
package Dancer2::Plugin::JsonApi;
use Dancer2::Plugin::JsonApi::Registry;
use Dancer2::Plugin;
use Dancer2::Serializer::JsonApi;
use experimental qw/ try /;
has registry => (
plugin_keyword => 'jsonapi_registry',
is => 'ro',
default => sub ($self) {
Dancer2::Plugin::JsonApi::Registry->new( app => $self->app );
}
);
sub jsonapi : PluginKeyword ( $plugin, $type, $sub ) {
return sub {
my $result = $sub->();
return [
$type => $result,
{ vars => $plugin->app->request->vars,
request => $plugin->app->request
}
];
};
}
sub BUILD ( $self, @ ) {
my $serializer = do {
try { $self->app->serializer_engine } catch ($e) {
}
};
unless ($serializer) {
$self->app->set_serializer_engine(
Dancer2::Serializer::JsonApi->new );
$serializer = $self->app->serializer_engine;
}
$serializer->registry( $self->registry )
if ref $serializer eq 'Dancer2::Serializer::JsonApi';
}
1;
__END__
@ -8,7 +55,11 @@ __END__
Dancer2::Plugin::JsonAPI
=head1 SEE ALSO
=head2 DESCRIPTION
If the serializer is not already explicitly set, the plugin will configure it to be L<Dancer2::Serializer::JsonApi>.
=head2 SEE ALSO
=over

10
t/plugin.t Normal file
View File

@ -0,0 +1,10 @@
use 5.38.0;
use Test2::V0;
use Dancer2;
use Dancer2::Plugin::JsonApi;
pass 'we compile!';
done_testing;