summaryrefslogtreecommitdiffstats
path: root/Bugzilla/PSGI.pm
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-02-18 22:39:43 +0100
committerDylan William Hardison <dylan@hardison.net>2018-03-10 21:54:38 +0100
commit6a995f2c172e4497df6683d978c7823647dcb2ed (patch)
treeed8ca494686e0eb355858ead4384a972f6209a77 /Bugzilla/PSGI.pm
parent5ee20b480b45ff9c66b7de3e957f7d0b6ed19ddb (diff)
downloadbugzilla-6a995f2c172e4497df6683d978c7823647dcb2ed.tar.gz
bugzilla-6a995f2c172e4497df6683d978c7823647dcb2ed.tar.xz
initial psgi support
Diffstat (limited to 'Bugzilla/PSGI.pm')
-rw-r--r--Bugzilla/PSGI.pm36
1 files changed, 36 insertions, 0 deletions
diff --git a/Bugzilla/PSGI.pm b/Bugzilla/PSGI.pm
new file mode 100644
index 000000000..22e08540d
--- /dev/null
+++ b/Bugzilla/PSGI.pm
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::PSGI;
+use 5.10.1;
+use strict;
+use warnings;
+
+use base qw(Exporter);
+
+our @EXPORT_OK = qw(compile_cgi);
+
+sub compile_cgi {
+ my ($script) = @_;
+ my $app = Plack::App::WrapCGI->new( script => $script )->to_app;
+
+ return sub {
+ my ($env) = @_;
+ Bugzilla::init_page();
+ if ($env->{'psgix.cleanup'}) {
+ push @{ $env->{'psgix.cleanup.handler'} }, \&Bugzilla::_cleanup;
+ }
+
+ my $res = $app->($env);
+ Bugzilla::_cleanup() if not $env->{'psgix.cleanup'};
+ return $res;
+ };
+}
+
+
+
+1; \ No newline at end of file