diff --git a/src/Api/V1/Controller/TorrentController.php b/src/Api/V1/Controller/TorrentController.php index dc6303a..a255c98 100644 --- a/src/Api/V1/Controller/TorrentController.php +++ b/src/Api/V1/Controller/TorrentController.php @@ -3,6 +3,7 @@ namespace App\Api\V1\Controller; use App\Api\V1\DTO\ApiResponse; +use App\Api\V1\DTO\ListPage; use App\Entity\Torrent; use App\Repository\TorrentRepository; use Pagerfanta\Adapter\DoctrineORMAdapter; @@ -28,7 +29,7 @@ class TorrentController extends Controller ->setMaxPerPage(self::PER_PAGE) ; - return $this->json(new ApiResponse($pager->getCurrentPageResults()),Response::HTTP_OK, [], [ + return $this->json(new ApiResponse(ListPage::createFromPager($pager)),Response::HTTP_OK, [], [ 'groups' => array_merge(self::DEFAULT_SERIALIZER_GROUPS,['api_v1_search']), ]); } diff --git a/src/Api/V1/DTO/ListPage.php b/src/Api/V1/DTO/ListPage.php new file mode 100644 index 0000000..6c81cfd --- /dev/null +++ b/src/Api/V1/DTO/ListPage.php @@ -0,0 +1,89 @@ +items = $items; + $this->numberOfResults = $numberOfResults; + $this->numberOfPages = $numberOfPages; + $this->currentPage = $currentPage; + $this->maxPerPage = $maxPerPage; + } + + public static function createFromPager(Pagerfanta $pager): self + { + return new static( + $pager->getCurrentPageResults(), + $pager->getNbResults(), + $pager->getNbPages(), + $pager->getCurrentPage(), + $pager->getMaxPerPage() + ); + } + + public function getNumberOfPages(): int + { + return $this->numberOfPages; + } + + public function getCurrentPage(): int + { + return $this->currentPage; + } + + public function getNumberOfResults(): int + { + return $this->numberOfResults; + } + + public function getMaxPerPage(): int + { + return $this->maxPerPage; + } + + public function getItems(): \Traversable + { + return $this->items; + } +} \ No newline at end of file