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

View File

@@ -64,7 +64,7 @@ class BoardApiController extends ApiController {
public function index() { public function index() {
$boards = $this->service->findAll(); $boards = $this->service->findAll();
return new DataResponse($boards); return new DataResponse($boards, HTTP::STATUS_OK);
} }
/** /**
@@ -72,13 +72,17 @@ class BoardApiController extends ApiController {
* @CORS * @CORS
* @NoCSRFRequired * @NoCSRFRequired
* *
* @params $id
* *
* Return the board specified by $id. * Return the board specified by $this->request->params['boardId'].
*/ */
public function get($id) { public function get() {
$board = $this->service->find($id);
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) { if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND); return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);
} }
@@ -97,26 +101,54 @@ class BoardApiController extends ApiController {
* Create a board with the specified title and color. * Create a board with the specified title and color.
*/ */
public function create($title, $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); $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);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @CORS * @CORS
* @NoCSRFRequired * @NoCSRFRequired
* *
* @params $boardId
* @params $title * @params $title
* @params $color * @params $color
* @params $archived * @params $archived
* *
* Update a board with the specified boardId, title and color, and archived state. * 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) { if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND); return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);
@@ -129,13 +161,17 @@ class BoardApiController extends ApiController {
* @NoAdminRequired * @NoAdminRequired
* @CORS * @CORS
* @NoCSRFRequired * @NoCSRFRequired
*
* *
* @params $id * Delete the board specified by $boardId. Return the board that was deleted.
*
* Delete the board specified by $id. Return the board that was deleted.
*/ */
public function delete($id) { public function delete() {
$board = $this->service->delete($id);
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) { if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND); return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);
@@ -148,13 +184,17 @@ class BoardApiController extends ApiController {
* @NoAdminRequired * @NoAdminRequired
* @CORS * @CORS
* @NoCSRFRequired * @NoCSRFRequired
*
* *
* @params $id * Undo the deletion of the board specified by $boardId.
*
* Undo the deletion of the board specified by $id.
*/ */
public function undoDelete($id) { public function undoDelete() {
$board = $this->service->find($id);
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) { if ($board === false || $board === null) {
return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND); return new DataResponse('Board not found', HTTP::STATUS_NOT_FOUND);