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;
|
||||
|
||||
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
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