Dancer2-Plugin-RPC-RESTISH
view release on metacpan or search on metacpan
example/lib/Example.pm view on Meta::CPAN
package Example;
use lib 'lib/';
use Data::Dumper; $Data::Dumper::Indent = 1;
our $VERSION = '0.999';
use Dancer2;
use Dancer2::Plugin::RPC::JSONRPC;
use Dancer2::Plugin::RPC::RESTISH;
use Example::API::System;
use Example::API::MockDB;
use Example::EndpointConfig;
use Bread::Board;
my $system_api = container 'System' => as {
container 'apis' => as {
service 'Example::API::System' => (
class => 'Example::API::System',
lifecycle => 'Singleton',
dependencies => {
app_version => literal $VERSION,
app_name => literal __PACKAGE__,
active_since => literal time(),
},
);
};
};
my $db_api = container 'MockDB' => as {
container 'apis' => as {
service 'Example::API::MockDB' => (
class => 'Example::API::MockDB',
lifecycle => 'Singleton',
dependencies => {
db => literal(
{ persons => {} }
),
},
);
};
};
no Bread::Board;
{
my $system_config = Example::EndpointConfig->new(
publish => 'pod',
bread_board => $system_api,
plugin_arguments => {
arguments => ['Example::API::System'],
},
);
my @plugins = grep { /^RPC::/ } keys %{ config->{plugins} };
for my $plugin (@plugins) {
$system_config->register_endpoint($plugin, '/system');
}
}
{
my $db_config = Example::EndpointConfig->new(
publish => 'config',
bread_board => $db_api,
plugin_arguments => {
plugin_args => { cors_allow_origin => '*' },
}
);
my @plugins = grep { /^RPC::/ } keys %{ config->{plugins} };
for my $plugin (@plugins) {
for my $path (keys %{ config->{plugins}{$plugin} }) {
$db_config->register_endpoint($plugin, $path);
}
}
}
1;
( run in 2.563 seconds using v1.01-cache-2.11-cpan-d6968d3fc7c )