config = $config; $this->privilegeService = $privilegeService; $this->postService = $postService; $this->postSearchParser = $postSearchParser; $this->inputReader = $inputReader; $this->postViewProxy = $postViewProxy; } public function getMethods() { return ['GET']; } public function getUrl() { return '/api/posts'; } public function work() { $this->privilegeService->assertPrivilege(Privilege::LIST_POSTS); $filter = $this->postSearchParser->createFilterFromInputReader($this->inputReader); $filter->setPageSize($this->config->posts->postsPerPage); $this->postService->decorateFilterFromBrowsingSettings($filter); $result = $this->postService->getFiltered($filter); $entities = $this->postViewProxy->fromArray($result->getEntities(), $this->getLightFetchConfig()); return [ 'data' => $entities, 'pageSize' => $result->getPageSize(), 'totalRecords' => $result->getTotalRecords()]; } }