diff --git a/lib/Controller/BoardApiController.php b/lib/Controller/BoardApiController.php index c4f6ca223..7dcc601c8 100644 --- a/lib/Controller/BoardApiController.php +++ b/lib/Controller/BoardApiController.php @@ -24,12 +24,14 @@ namespace OCA\Deck\Controller; +use OCA\Deck\StatusException; use OCP\AppFramework\ApiController; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; use OCA\Deck\Service\BoardService; +use Sabre\HTTP\Util; /** * Class BoardApiController @@ -61,10 +63,14 @@ class BoardApiController extends ApiController { */ public function index() { $modified = $this->request->getHeader('If-Modified-Since'); - if ($modified === '') { + if ($modified === null || $modified === '') { $boards = $this->service->findAll(); } else { - $boards = $this->service->findAll(strtotime($modified)); + $date = Util::parseHTTPDate($modified); + if (!$date) { + throw new StatusException('Invalid If-Modified-Since header provided.'); + } + $boards = $this->service->findAll($date->getTimestamp()); } return new DataResponse($boards, HTTP::STATUS_OK); } diff --git a/lib/Controller/StackApiController.php b/lib/Controller/StackApiController.php index 021fae9c2..a9cec08cb 100644 --- a/lib/Controller/StackApiController.php +++ b/lib/Controller/StackApiController.php @@ -24,12 +24,14 @@ namespace OCA\Deck\Controller; +use OCA\Deck\StatusException; use OCP\AppFramework\ApiController; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; use OCA\Deck\Service\StackService; use OCA\Deck\Service\BoardService; +use Sabre\HTTP\Util; /** * Class StackApiController @@ -62,8 +64,12 @@ class StackApiController extends ApiController { public function index() { $since = 0; $modified = $this->request->getHeader('If-Modified-Since'); - if ($modified !== '') { - $since = strtotime($modified); + if ($modified !== null && $modified !== '') { + $date = Util::parseHTTPDate($modified); + if (!$date) { + throw new StatusException('Invalid If-Modified-Since header provided.'); + } + $since = $date->getTimestamp(); } $stacks = $this->stackService->findAll($this->request->getParam('boardId'), $since); return new DataResponse($stacks, HTTP::STATUS_OK);