From: Don Armstrong Date: Sun, 11 Aug 2019 17:07:31 +0000 (-0700) Subject: serve configuration items as json under the config space X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=cff416c8fa57cf77f306e222052ddb3fb7b41e10;p=debbugs.git serve configuration items as json under the config space --- diff --git a/lib/Debbugs/Mojo.pm b/lib/Debbugs/Mojo.pm index c8005ec..9ee9913 100644 --- a/lib/Debbugs/Mojo.pm +++ b/lib/Debbugs/Mojo.pm @@ -15,6 +15,7 @@ sub startup { $r->get('/bug/')->to('Bug#show')->name('show_bug'); $r->get('/')->to('Package#show')->name('show_package'); $r->get('/package/')->to('Package#show')->name('show_package'); + $r->get('/config/:item')->to('Config#show')->name('show_config'); $r->get('/' => sub { my $c = shift; $c->render(text => 'Mojolicious rocks'); diff --git a/lib/Debbugs/Mojo/Controller/Config.pm b/lib/Debbugs/Mojo/Controller/Config.pm new file mode 100644 index 0000000..fc3f7a0 --- /dev/null +++ b/lib/Debbugs/Mojo/Controller/Config.pm @@ -0,0 +1,26 @@ +package Debbugs::Mojo::Controller::Config; + +use Mojo::Base 'Mojolicious::Controller'; + +use Debbugs::Config qw(config); + +my %whitelist; + +for (qw(tags distribution_aliases distributions), + qw(tags_single_letter severity_list strong_severities), + qw(severity_display project project_title), + qw(web_domain email_domain), + ) { + $whitelist{$_} = 1; +} +sub show { + my $c = shift; + my $item = $c->stash('item'); + return $c->reply->not_found unless $whitelist{$item}; + my $m = config()->meta->find_method_by_name($item); + return $c->reply->not_found unless defined $m; + my $r = $m->(config()); + return $c->render(json => $r); +} + +1;