OSDN Git Service

change sidebar related API endpoints
authorhylom <hylom@users.sourceforge.jp>
Thu, 31 Aug 2017 13:08:09 +0000 (22:08 +0900)
committerhylom <hylom@users.sourceforge.jp>
Thu, 31 Aug 2017 13:08:09 +0000 (22:08 +0900)
src/newslash_web/lib/Newslash/Web.pm
src/newslash_web/lib/Newslash/Web/Controller/API/Admin/Sidebar.pm [new file with mode: 0644]
src/newslash_web/lib/Newslash/Web/Controller/Admin/Sidebar.pm

index 15feea6..d4685e5 100644 (file)
@@ -220,11 +220,6 @@ sub startup {
     $admin->get('/default-sidebar')->to('admin-sidebar#defaults');
 
     $admin->get('/sidebar')->to('admin-sidebar#index');
-    $admin->post('/sidebar/update')->to('admin-sidebar#update');
-    $admin->post('/sidebar/delete')->to('admin-sidebar#delete');
-    $admin->any(['GET', 'POST'] => '/sidebar/list')->to('admin-sidebar#list');
-    $admin->post('/sidebar/get')->to('admin-sidebar#get');
-
     $admin->get('/feed')->to('admin-feed#index');
     $admin->get('/blocking')->to('admin-blocking#index');
 
@@ -241,10 +236,11 @@ sub startup {
     $admin_api->get('/repository/export')->to('API::Admin::Repository#export');
     $admin_api->get('/repository/import')->to('API::Admin::Repository#import');
 
+    $admin_api->post('/sidebar')->to('API::Admin::Sidebar#post');
+    $admin_api->get('/sidebar')->to('API::Admin::Sidebar#get');
+
     # API
     my $api = $r->under('/api/v1');
-    $api->get('/sidebars')->to('admin-sidebar#list');
-
     $api->post('/login')->to('API::Login#login');
 
     $api->get('/comment')->to('API::Comment#get');
diff --git a/src/newslash_web/lib/Newslash/Web/Controller/API/Admin/Sidebar.pm b/src/newslash_web/lib/Newslash/Web/Controller/API/Admin/Sidebar.pm
new file mode 100644 (file)
index 0000000..987f638
--- /dev/null
@@ -0,0 +1,141 @@
+package Newslash::Web::Controller::API::Admin::Sidebar;
+use Mojo::Base 'Mojolicious::Controller';
+use Mojo::Util qw(dumper);
+
+sub get {
+    my $c = shift;
+    my $data = $c->req->params->to_hash || {};
+
+    if ($data->{id}) {
+        my $boxes = $c->app->model('boxes');
+        my $item = $boxes->select(id => $data->{id});
+        if (!$item) {
+            $c->rendered(404);
+            $c->render(json => {error => 1, message => "not_found"});
+            return;
+        }
+        return $c->render(json => {item => $item});
+    }
+
+    return $c->_list(@_);
+}
+
+sub _list {
+    my $c = shift;
+    my $boxes = $c->app->model('boxes');
+    my $items = $boxes->select;
+
+    if (!defined $items) {
+        $c->rendered(500);
+        $c->render(json => {error => 1, message => $boxes->last_error});
+        return;
+    }
+
+    $c->render(json => {items => $items});
+    return;
+}
+
+sub post {
+    my $c = shift;
+    my $data = $c->req->json || {};
+    my $action = $data->{action} || "";
+
+    if ($data->{action} eq "create") {
+        return $c->_create(@_);
+    }
+    elsif ($data->{action} eq "update") {
+        return $c->_update(@_);
+    }
+    elsif ($data->{action} eq "delete") {
+        return $c->_delete(@_);
+    }
+    $c->rendered(400);
+    $c->render(json => {error => 1, message => "invalid_request"});
+    return;
+}
+
+sub _create {
+    my $c = shift;
+    my $boxes = $c->app->model('boxes');
+    my $data = $c->req->json;
+
+    my $params = {};
+    my $message = "";
+    $message = "no_name_given" if !$data->{name};
+
+    if (length $message) {
+        $c->rendered(400);
+        $c->render(json => {error => 1, message => $message});
+        return;
+    }
+
+    for my $i (qw(name security_level title comment type model query_params limit template)) {
+        $params->{$i} = $data->{$i} if defined $data->{$i};
+    }
+
+
+    my $id = $boxes->create(%$params);
+    if (!$id) {
+        $c->rendered(400);
+        $c->render(json => {error => 1, message => $boxes->last_error});
+    }
+    $c->render(json => {id => $id});
+    return;
+
+}
+
+sub _update {
+    my $c = shift;
+    my $boxes = $c->app->model('boxes');
+    my $data = $c->req->json;
+
+    my $params = {};
+    my $message = "";
+    $message = "no_id_given" if !$data->{id};
+
+    if (length $message) {
+        $c->rendered(400);
+        $c->render(json => {error => 1, message => $message});
+        return;
+    }
+
+    for my $i (qw(id name security_level title comment type model query_params limit template)) {
+        $params->{$i} = $data->{$i} if defined $data->{$i};
+    }
+
+
+    my $id = $boxes->update(%$params);
+    if (!$id) {
+        $c->rendered(400);
+        $c->render(json => {error => 1, message => $boxes->last_error});
+    }
+    $c->render(json => {id => $id});
+    return;
+}
+
+sub _delete {
+    my $c = shift;
+    my $boxes = $c->app->model('boxes');
+    my $data = $c->req->json || {};
+
+    my $message = "";
+    $message = "no_id_given" if !$data->{id};
+
+    if (length $message) {
+        $c->render(json => {error => 1, message => $message});
+        return;
+    }
+
+    my $rs = $boxes->delete(id => $data->{id});
+
+    if (!$rs) {
+        $c->render(json => {error => 1, message => $boxes->last_error});
+        return;
+    }
+    $c->render(json => {error => 0, id => $data->{id}});
+    return;
+}
+
+
+1;
+
index f606318..8c0ae40 100644 (file)
@@ -2,111 +2,11 @@ package Newslash::Web::Controller::Admin::Sidebar;
 use Mojo::Base 'Mojolicious::Controller';
 use Mojo::Util qw(dumper);
 
-
 sub index {
     my $c = shift;
     $c->render;
 }
 
-sub list {
-    my $c = shift;
-    my $boxes = $c->app->model('boxes');
-    my $items = [];
-    my $message = "";
-
-    $items = $boxes->select;
-    $c->render(json => {message => $message, items => $items});
-    return;
-}
-
-sub update {
-    my $c = shift;
-    my $boxes = $c->app->model('boxes');
-    my $data = $c->req->json;
-
-    if (!$data) {
-        $c->rendered(400);
-        return;
-    }
-
-    my $params = {};
-    my $err = "";
-    $err = "no name" if !$data->{name};
-    for my $i (qw(name security_level title comment type model query_params limit template)) {
-            $params->{$i} = $data->{$i} if defined $data->{$i};
-    }
-
-    if (length $err) {
-        $c->render(json => {error => 1, message => $err});
-        return;
-    }
-
-    my $id;
-    if ($data->{id}) { # update item
-        $id = $boxes->update(id => $data->{id}, $params);
-    }
-    else { # create new item
-        $id = $boxes->create($params);
-    }
-    if (!$id) {
-        $c->render(json => {error => 1, message => $boxes->last_error});
-        return;
-    }
-    $c->render(json => {id => $id});
-    return;
-}
-
-sub delete {
-    my $c = shift;
-    my $boxes = $c->app->model('boxes');
-    my $data = $c->req->json;
-
-    if (!$data) {
-        $c->rendered(400);
-        return;
-    }
-
-    my $params = {};
-    my $err = "";
-    if (!$data->{id}) {
-        $err = "no id given";
-    }
-    if (length $err) {
-        $c->render(json => {error => 1, message => $err});
-        return;
-    }
-
-    my $rs = $boxes->delete($data->{id});
-
-    if (!$rs) {
-        $c->render(json => {error => 1, message => $boxes->last_error});
-        return;
-    }
-    $c->render(json => {error => 0, id => $data->{id}});
-    return;
-}
-
-sub get {
-    my $c = shift;
-    my $boxes = $c->app->model('boxes');
-    my $message = "";
-
-    my $data = $c->req->json;
-
-    if (!$data || !$data->{id}) {
-        $c->rendered(400);
-        return;
-    }
-
-    my $item = $boxes->select(id => $data->{id});
-    if (!$item) {
-        $c->render(json => {message => "no item"});
-        return;
-    }
-
-    $c->render(json => {item => $item});
-    return;
-}
 
 1;