Browse Source

bare plack app

vividsnow 12 years ago
parent
commit
a44a2ddf07
1 changed files with 28 additions and 0 deletions
  1. 28 0
      plack/app.psgi

+ 28 - 0
plack/app.psgi

@@ -0,0 +1,28 @@
+# starman --workers N app.psgi
+use v5.16;
+use Plack::Builder;
+use Plack::Request;
+use JSON::XS 'encode_json';
+use DBI;
+
+my $dbh = DBI->connect('dbi:mysql:dbname=test', 'root') || die $!;
+my $sth = $dbh->prepare('SELECT id, randomnumber FROM world WHERE id = ?');
+my $header = HTTP::Headers->new('Content-Type' => 'application/json');
+
+builder {
+    mount '/json' => sub { 
+        Plack::Request->new(shift)->new_response(
+            200, $header, encode_json({ message => 'Hello, World!' }) 
+        )->finalize 
+    },
+    mount '/dbi' => sub {
+        my $r = Plack::Request->new(shift);
+        $r->new_response( 200, $header, encode_json([ 
+            map { id => $_->[0], randomnumber => $_->[1] }, 
+            grep exists $_->[1], 
+            map [$_, $sth->execute($_) && $sth->fetchrow_array], 
+            map int rand 10000 + 1, 
+            1..$r->param('queries')//1 
+        ]) )->finalize
+    }
+};