]> git.donarmstrong.com Git - debbugs.git/commitdiff
serve configuration items as json under the config space don/mojo_log_rework don/mojolicious
authorDon Armstrong <don@donarmstrong.com>
Sun, 11 Aug 2019 17:07:31 +0000 (10:07 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sun, 11 Aug 2019 17:07:31 +0000 (10:07 -0700)
lib/Debbugs/Mojo.pm
lib/Debbugs/Mojo/Controller/Config.pm [new file with mode: 0644]

index c8005ec739cb864efdf7c41c42ad84c0f1866896..9ee99139c5c75b337f0d88bc5a897dc49d4f50c3 100644 (file)
@@ -15,6 +15,7 @@ sub startup {
   $r->get('/bug/<bug:bug>')->to('Bug#show')->name('show_bug');
   $r->get('/<package:package>')->to('Package#show')->name('show_package');
   $r->get('/package/<package: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 (file)
index 0000000..fc3f7a0
--- /dev/null
@@ -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;