]> git.ktnx.net Git - lsl.git/blobdiff - lib/App/LazyShoppingList/API/v1.pm
return exception responses as JSON
[lsl.git] / lib / App / LazyShoppingList / API / v1.pm
index 8a30acbc11b227928739df9dcf2f9f7a869c8890..f94db2ea3d7aa4381723159345a4a618e160e671 100644 (file)
@@ -13,9 +13,7 @@ use JSON();
 use experimental 'signatures';
 
 set charset      => 'UTF-8';
-set serializer   => 'JSON';
-set content_type => 'application/json';
-
+set serializer => 'JSON';
 
 # get the URI for the list of shopping lists
 get '/' => sub {
@@ -48,9 +46,7 @@ post '/list' => sub {
 
     my $name = $req->{name};
     unless ($name) {
-        status 400;
-        content_type 'text/plain';
-        return "Missing list name";
+        return exception 400, "Missing list name";
     }
 
     my $dbh = get_database;
@@ -87,9 +83,7 @@ get '/list/:list_id' => sub {
 
     unless ($list) {
         $dbh->txn_commit;
-        status 404;
-        content_type 'text/plain';
-        return "No list with that ID found";
+        return exception 404, "No list with that ID found";
     }
 
     $r{version} = $list->version;
@@ -133,9 +127,7 @@ post '/list/:id' => sub {
 
     unless ($list) {
         $dbh->txn_commit;
-        status 404;
-        content_type 'text/plain';
-        return "No such list";
+        exception 404, "No such list";
     }
 
     my $item = $dbh->resultset('ShoppingListItem')->create(
@@ -186,17 +178,13 @@ put '/list/:list_id/:item_id' => sub {
     my $list = $dbh->resultset('ShoppingList')->find($list_id);
     unless ($list) {
         $dbh->txn_commit;
-        status 404;
-        content_type 'text/plain';
-        return "No such list";
+        return exception 404, "No such list";
     }
 
     my $item = $dbh->resultset('ShoppingListItem')->find({shopping_list => $list->id, id => $item_id});
     unless ($item) {
         $dbh->txn_commit;
-        status 404;
-        content_type 'text/plain';
-        return "No such item";
+        return exception 404, "No such item";
     }
 
     # in case no real changes are needed will return the current state
@@ -205,9 +193,7 @@ put '/list/:list_id/:item_id' => sub {
     {
         unless ($version == $item->version) {
             $dbh->txn_commit;
-            status 409;
-            content_type 'text/plain';
-            return
+            return exception 409, exception =>
                 sprintf( 'Outdated version (current is %d)', $item->version );
         }