Put in validation responses in BoardApiController

Signed-off-by: Ryan Fletcher <ryan.fletcher@codepassion.ca>
This commit is contained in:
Ryan Fletcher
2018-07-12 23:01:38 -04:00
committed by Julius Härtl
parent 5415ec21dc
commit ced87edfa5
2 changed files with 66 additions and 27 deletions

View File

@@ -78,18 +78,17 @@ return [
// api
['name' => 'board_api#index', 'url' => '/api/v1.0/boards', 'verb' => 'GET'],
['name' => 'board_api#get', 'url' => '/api/v1.0/boards/{id}', 'verb' => 'GET'],
['name' => 'board_api#get', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'GET'],
['name' => 'board_api#create', 'url' => '/api/v1.0/boards', 'verb' => 'POST'],
['name' => 'board_api#delete', 'url' => '/api/v1.0/boards/{id}', 'verb' => 'DELETE'],
['name' => 'board_api#update', 'url' => '/api/v1.0/boards/{id}', 'verb' => 'PUT'],
['name' => 'board_api#undo_delete', 'url' => '/api/v1.0/boards/{id}/undo_delete', 'verb' => 'POST'],
['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'],
['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'],
['name' => 'stack_api#delete', 'url' => '/api/v1.0/boards/{boardId}/stacks/{stackId}', 'verb' => 'DELETE'],
['name' => 'board_api#preflighted_cors', 'url' => '/api/v1.0/{path}',
'verb' => 'OPTIONS', 'requirements' => ['path' => '.+']],
['name' => 'board_api#preflighted_cors', 'url' => '/api/v1.0/{path}','verb' => 'OPTIONS', 'requirements' => ['path' => '.+']],
]
];

View File

@@ -64,7 +64,7 @@ class BoardApiController extends ApiController {
public function index() {
$boards = $this->service->findAll();
return new DataResponse($boards);
return new DataResponse($boards, HTTP::STATUS_OK);
}
/**
@@ -72,12 +72,16 @@ class BoardApiController extends ApiController {
* @CORS
* @NoCSRFRequired
*
* @params $id
*
* Return the board specified by $id.
* Return the board specified by $this->request->params['boardId'].
*/
public function get($id) {
$board = $this->service->find($id);
public function get() {
if (is_numeric($this->request->params['boardId']) === false) {
return new DataResponse("board id must be a number", HTTP::STATUS_BAD_REQUEST);
}
$board = $this->service->find($this->request->params['boardId']);
if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);
@@ -97,9 +101,22 @@ class BoardApiController extends ApiController {
* Create a board with the specified title and color.
*/
public function create($title, $color) {
if ($title === false) {
return new DataResponse("title must be provided", HTTP::STATUS_BAD_REQUEST);
}
if ($color === false) {
return new DataResponse("color must be provided", HTTP::STATUS_BAD_REQUEST);
}
$board = $this->service->create($title, $this->userId, $color);
return new DataResponse($board);
if ($board === false || $board === null) {
return new DataResponse('Internal Server Error', HTTP::STATUS_INTERNAL_SERVER_ERROR);
}
return new DataResponse($board, HTTP::STATUS_OK);
}
/**
@@ -107,16 +124,31 @@ class BoardApiController extends ApiController {
* @CORS
* @NoCSRFRequired
*
* @params $boardId
* @params $title
* @params $color
* @params $archived
*
* Update a board with the specified boardId, title and color, and archived state.
*/
public function update($boardId, $title, $color, $archived) {
public function update($title, $color, $archived = false) {
$board = $this->service->update($boardId, $title, $color, $archived);
if (is_numeric($this->request->params['boardId']) === false) {
return new DataResponse("board id must be a number", HTTP::STATUS_BAD_REQUEST);
}
if (is_bool($archived) === false) {
return new DataResponse("archived must be a boolean", HTTP::STATUS_BAD_REQUEST);
}
if ($title === false) {
return new DataResponse("title must be provided", HTTP::STATUS_BAD_REQUEST);
}
if ($color === false) {
return new DataResponse("color must be provided", HTTP::STATUS_BAD_REQUEST);
}
$board = $this->service->update($this->request->params['boardId'], $title, $color, $archived);
if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);
@@ -130,12 +162,16 @@ class BoardApiController extends ApiController {
* @CORS
* @NoCSRFRequired
*
* @params $id
*
* Delete the board specified by $id. Return the board that was deleted.
* Delete the board specified by $boardId. Return the board that was deleted.
*/
public function delete($id) {
$board = $this->service->delete($id);
public function delete() {
if (is_numeric($this->request->params['boardId']) === false) {
return new DataResponse("board id must be a number", HTTP::STATUS_BAD_REQUEST);
}
$board = $this->service->delete($this->request->params['boardId']);
if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);
@@ -149,12 +185,16 @@ class BoardApiController extends ApiController {
* @CORS
* @NoCSRFRequired
*
* @params $id
*
* Undo the deletion of the board specified by $id.
* Undo the deletion of the board specified by $boardId.
*/
public function undoDelete($id) {
$board = $this->service->find($id);
public function undoDelete() {
if (is_numeric($this->request->params['boardId']) === false) {
return new DataResponse("board id must be a number", HTTP::STATUS_BAD_REQUEST);
}
$board = $this->service->find($this->request->params['boardId']);
if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);