src/AppBundle/Prismic/FeaturedMovieRepository.php line 111

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Prismic;
  3. use AppBundle\Helpers\LocalizationHelper;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use GuzzleHttp\Client;
  6. class FeaturedMovieRepository extends PrismicRepository
  7. {
  8.     /**
  9.      * @var string
  10.      */
  11.     private $type;
  12.     /**
  13.      * @param RequestStack $requestStack
  14.      * @param LocalizationHelper $localizationHelper
  15.      * @param string $prismicUrl
  16.      * @param string $prismicToken
  17.      */
  18.     public function __construct(
  19.         RequestStack $requestStack,
  20.         LocalizationHelper $localizationHelper
  21.     ) {
  22.         parent::__construct($requestStack$localizationHelper);
  23.         $this->type 'movie';
  24.     }
  25.     /**
  26.      * @return array
  27.      */
  28.     public function findAllOrderedByPublicationDate(
  29.         ?int $pageSize 20,
  30.         ?int $page 1
  31.     ): array {
  32.         $site $this->requestStack->getCurrentRequest()->getLocale();
  33.         $client = new Client();
  34.         $response $client->request('GET'"https://content.europeanfilmchallenge.eu/{$site}/movies", [
  35.             'headers' => [
  36.                 'Accept' => 'application/json',
  37.             ],
  38.             'query' => [
  39.                 'order' => 'DESC',
  40.                 'page' => $page,
  41.                 'page-size' => $pageSize,
  42.             ],
  43.         ]);
  44.         $body json_decode($response->getBody());
  45.         $movies $body->items;
  46.         return [
  47.             'data' => collect($movies)->map(function ($movie) {
  48.                 return Movie::create($movie);
  49.             }),
  50.             'meta' => [
  51.                 'page' => $body->page,
  52.                 'prev_page' => $body->prev_page,
  53.                 'next_page' => $body->next_page,
  54.                 'total_pages' => $body->total_pages,
  55.             ],
  56.         ];
  57.     }
  58.     /**
  59.      * @return array
  60.      */
  61.     public function findAllSlider(): array {
  62.         $site $this->requestStack->getCurrentRequest()->getLocale();
  63.         $client = new Client();
  64.         $response $client->request('GET'"https://content.europeanfilmchallenge.eu/{$site}/movies/slider", [
  65.             'headers' => [
  66.                 'Accept' => 'application/json',
  67.             ],
  68.         ]);
  69.         $body json_decode($response->getBody());
  70.         $movies $body->items;
  71.         return [
  72.             'data' => collect($movies)->map(function ($movie) {
  73.                 return Movie::create($movie);
  74.             }),
  75.         ];
  76.     }
  77.     /**
  78.      * @param string $uid
  79.      *
  80.      * @return Movie
  81.      */
  82.     public function findOneByUid(string $uid): Movie
  83.     {
  84.         $site $this->requestStack->getCurrentRequest()->getLocale();
  85.         $client = new Client();
  86.         $response $client->request('GET'"https://content.europeanfilmchallenge.eu/{$site}/movie/{$uid}", [
  87.             'headers' => [
  88.                 'Accept' => 'application/json',
  89.             ]
  90.         ]);
  91.         $body json_decode($response->getBody());
  92.         $movie = (object)$body->movie;
  93.         return Movie::create((object)$movie);
  94.     }
  95. }