STRACT: JsonApi helpers for Dancer2 apps
use 5.38.0;
package Dancer2::Plugin::JsonApi;
our $AUTHORITY = 'cpan:YANICK';
$Dancer2::Plugin::JsonApi::VERSION = '0.0.1';
use Dancer2::Plugin::JsonApi::Reg
ncer2::Serializer::JsonApi;
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,
{
use 5.32.0;
package Dancer2::Plugin::JsonApi::Schema;
our $AUTHORITY = 'cpan:YANICK';
$Dancer2::Plugin::JsonApi::Schema::VERSION = '0.0.1';
use Moo;
use experimental qw/ signatures /;
use List::Al
'ro' );
sub serialize ( $self, $data, $extra_data = {} ) {
my $serial = {};
$serial->{jsonapi} = { version => '1.0' };
my @included;
if ( defined $data ) {
$serial->{data
8
=head1 NAME
Dancer2::Plugin::JsonApi::Schema
=head1 VERSION
version 0.0.1
=head1 DESCRIPTION
Defines a type of object to serialize/deserialize from/to the
JSON:API format.
=head1 ATTRIBUTES
ancer2::Serializer::JsonApi;
our $AUTHORITY = 'cpan:YANICK';
$Dancer2::Serializer::JsonApi::VERSION = '0.0.1';
use Dancer2::Plugin::JsonApi::Registry;
use Dancer2::Serializer::JSON;
use Moo;
has co
lication/vnd.api+json' );
with 'Dancer2::Core::Role::Serializer';
has registry => (
is => 'rw',
default => sub { Dancer2::Plugin::JsonApi::Registry->new }
);
has json_serializer => (
=> 'ro',
default => sub { Dancer2::Serializer::JSON->new }
);
sub serialize {
my ( $self, $data ) = @_;
return $self->json_serializer->serialize(
$self->registry->serializ