fleshing out the plugin
This commit is contained in:
parent
80f9d7b582
commit
7cee2ecb47
@ -1,5 +1,52 @@
|
|||||||
|
use 5.38.0;
|
||||||
|
|
||||||
package Dancer2::Plugin::JsonApi;
|
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;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
@ -8,7 +55,11 @@ __END__
|
|||||||
|
|
||||||
Dancer2::Plugin::JsonAPI
|
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
|
=over
|
||||||
|
|
||||||
|
10
t/plugin.t
Normal file
10
t/plugin.t
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
use 5.38.0;
|
||||||
|
|
||||||
|
use Test2::V0;
|
||||||
|
|
||||||
|
use Dancer2;
|
||||||
|
use Dancer2::Plugin::JsonApi;
|
||||||
|
|
||||||
|
pass 'we compile!';
|
||||||
|
|
||||||
|
done_testing;
|
Loading…
Reference in New Issue
Block a user