Dancer2-Plugin-OpenAPIRoutes
view release on metacpan or search on metacpan
lib/Dancer2/Plugin/OpenAPIRoutes.pm view on Meta::CPAN
(
$p,
[
map { +{ method => $_, pspec => $ps } }
grep { !/^x-/ }
keys %{ $paths->{$_} }
]
)
}
sort { ## no critic (BuiltinFunctions::RequireSimpleSortBlock)
my @a = split m{/}, $a;
my @b = split m{/}, $b;
@b <=> @a;
}
grep { !/^x-/ && 'HASH' eq ref $paths->{$_} }
keys %{$paths};
#>>>
my %paths;
## no critic (ControlStructures::ProhibitCStyleForLoops)
for (my $i = 0; $i < @paths; $i += 2) {
my $p = $paths[$i];
my $ma = $paths[$i + 1];
my $m;
my $mn = @$ma;
if ($mn == 1 && !exists $paths{$p}) {
my @p = split m{/}, $p;
if (@p > 2) {
$m = pop @p;
}
$p = join "/", @p;
}
if ($m) {
push @{$paths{$p}}, $m;
my $ps = $ma->[0]{pspec};
my $method = $ma->[0]{method};
$paths->{$ps}{$method}{'x-path-map'} = {
lib/Dancer2/Plugin/OpenAPIRoutes.pm view on Meta::CPAN
head => 'check'
);
my %http_methods_func_map;
sub _path_to_fqfn {
my ($config, $schema, $path_spec, $method) = @_;
my $paths = $schema->{paths};
my $module_name;
my $func = $paths->{$path_spec}{$method}{'x-path-map'}{func};
my @pwsr = split m{/}, $paths->{$path_spec}{$method}{'x-path-map'}{module_path};
$module_name = join "::", map {_path2mod $_ } @pwsr;
if ($http_methods_func_map{"$method:$path_spec"}) {
my ($mf, $mm) = split /:/, $http_methods_func_map{"$method:$path_spec"}, 2;
$func = $mf if $mf;
$module_name = $mm if $mm;
}
if ($module_name eq '') {
$module_name = $config->{default_module} || $config->{appname};
} else {
$module_name = $config->{namespace} . $module_name;
( run in 1.318 second using v1.01-cache-2.11-cpan-71847e10f99 )