Refactored error handling in StackApiController and moved it into ApiHelper.php, this will allow me to use the same checks in all controllers.
Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
This commit is contained in:
committed by
Julius Härtl
parent
d9f3d492dc
commit
a388d199dc
@@ -84,8 +84,7 @@ return [
|
||||
['name' => 'board_api#delete', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'DELETE'],
|
||||
['name' => 'board_api#update', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'PUT'],
|
||||
['name' => 'board_api#undo_delete', 'url' => '/api/v1.0/boards/{boardId}/undo_delete', 'verb' => 'POST'],
|
||||
|
||||
// TODO: Add in a get for the stack_api
|
||||
|
||||
['name' => 'stack_api#index', 'url' => '/api/v1.0/boards/{boardId}/stacks', 'verb' => 'GET'],
|
||||
['name' => 'stack_api#create', 'url' => '/api/v1.0/boards/{boardId}/stacks', 'verb' => 'POST'],
|
||||
['name' => 'stack_api#update', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}', 'verb' => 'PUT'],
|
||||
|
||||
49
lib/Controller/Helper/ApiHelper.php
Normal file
49
lib/Controller/Helper/ApiHelper.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Deck\Controller\Helper;
|
||||
|
||||
use OCP\AppFramework\Http;
|
||||
|
||||
class ApiHelper {
|
||||
|
||||
public static function entityHasError($entityId, $entityName, $service) {
|
||||
if (is_numeric($entityId) === false) {
|
||||
$error['message'] = $entityName . ' id must be a number';
|
||||
$error['status'] = HTTP::STATUS_BAD_REQUEST;
|
||||
return $error;
|
||||
}
|
||||
|
||||
$entity = $service->find($entityId);
|
||||
|
||||
if ($entity === false || $entity === null) {
|
||||
$error['message'] = 'Board does not exist';
|
||||
$error['status'] = HTTP::STATUS_NOT_FOUND;
|
||||
return $error;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,6 +31,8 @@ use OCP\IRequest;
|
||||
|
||||
use OCA\Deck\StatusException;
|
||||
use OCA\Deck\Service\StackService;
|
||||
use OCA\Deck\Service\BoardService;
|
||||
use OCA\Deck\Controller\Helper\ApiHelper;
|
||||
|
||||
/**
|
||||
* Class StackApiController
|
||||
@@ -42,6 +44,7 @@ class StackApiController extends ApiController {
|
||||
private $boardService;
|
||||
private $stackService;
|
||||
private $userInfo;
|
||||
private $apiHelper;
|
||||
|
||||
/**
|
||||
* @param string $appName
|
||||
@@ -52,6 +55,7 @@ class StackApiController extends ApiController {
|
||||
parent::__construct($appName, $request);
|
||||
$this->service = $stackService;
|
||||
$this->boardService = $boardService;
|
||||
$this->apiHelper = new ApiHelper();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,7 +66,7 @@ class StackApiController extends ApiController {
|
||||
* Return all of the stacks in the specified board.
|
||||
*/
|
||||
public function index() {
|
||||
$boardError = boardHasError($this->request->params['boardId']);
|
||||
$boardError = $this->apiHelper->entityHasError( $this->request->params['boardId'], 'board', $this->boardService );
|
||||
|
||||
if ($boardError) {
|
||||
return new DataResponse($boardError['message'], $boardError['status']);
|
||||
@@ -77,6 +81,8 @@ class StackApiController extends ApiController {
|
||||
return new DataResponse($stacks, HTTP::STATUS_OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @CORS
|
||||
@@ -89,7 +95,7 @@ class StackApiController extends ApiController {
|
||||
*/
|
||||
public function create($title, $order) {
|
||||
|
||||
$boardError = boardHasError($this->request->params['boardId']);
|
||||
$boardError = $this->apiHelper->entityHasError( $this->request->params['boardId'], 'board', $this->boardService );
|
||||
|
||||
if ($boardError) {
|
||||
return new DataResponse($boardError['message'], $boardError['status']);
|
||||
@@ -121,7 +127,7 @@ class StackApiController extends ApiController {
|
||||
*/
|
||||
public function update($title, $order) {
|
||||
|
||||
$boardError = boardHasError($this->request->params['boardId']);
|
||||
$boardError = $this->apiHelper->entityHasError( $this->request->params['boardId'], 'board', $this->boardService );
|
||||
|
||||
if ($boardError) {
|
||||
return new DataResponse($boardError['message'], $boardError['status']);
|
||||
@@ -157,7 +163,7 @@ class StackApiController extends ApiController {
|
||||
*/
|
||||
public function delete() {
|
||||
|
||||
$boardError = boardHasError($this->request->params['boardId']);
|
||||
$boardError = $this->apiHelper->entityHasError( $this->request->params['boardId'], 'board', $this->boardService );
|
||||
|
||||
if ($boardError) {
|
||||
return new DataResponse($boardError['message'], $boardError['status']);
|
||||
@@ -175,23 +181,4 @@ class StackApiController extends ApiController {
|
||||
|
||||
return new DataResponse($stack, HTTP::STATUS_OK);
|
||||
}
|
||||
|
||||
private function boardHasError($boardId) {
|
||||
if (is_numeric($boardId) === false) {
|
||||
$error['message'] = 'Board id must be a number';
|
||||
$error['status'] = HTTP::STATUS_BAD_REQUEST;
|
||||
return $error;
|
||||
}
|
||||
|
||||
$board = $this->boardService->find($boardId);
|
||||
|
||||
if ($board === false || $board === null) {
|
||||
$error['message'] = 'Board does not exist';
|
||||
$error['status'] = HTTP::STATUS_NOT_FOUND;
|
||||
return $error;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user