$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');
$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');
--- /dev/null
+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;
+
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;