<?php
namespace AppBundle\Prismic;
use AppBundle\Helpers\LocalizationHelper;
use Symfony\Component\HttpFoundation\RequestStack;
use GuzzleHttp\Client;
class FeaturedMovieRepository extends PrismicRepository
{
/**
* @var string
*/
private $type;
/**
* @param RequestStack $requestStack
* @param LocalizationHelper $localizationHelper
* @param string $prismicUrl
* @param string $prismicToken
*/
public function __construct(
RequestStack $requestStack,
LocalizationHelper $localizationHelper
) {
parent::__construct($requestStack, $localizationHelper);
$this->type = 'movie';
}
/**
* @return array
*/
public function findAllOrderedByPublicationDate(
?int $pageSize = 20,
?int $page = 1
): array {
$site = $this->requestStack->getCurrentRequest()->getLocale();
$client = new Client();
$response = $client->request('GET', "https://content.europeanfilmchallenge.eu/{$site}/movies", [
'headers' => [
'Accept' => 'application/json',
],
'query' => [
'order' => 'DESC',
'page' => $page,
'page-size' => $pageSize,
],
]);
$body = json_decode($response->getBody());
$movies = $body->items;
return [
'data' => collect($movies)->map(function ($movie) {
return Movie::create($movie);
}),
'meta' => [
'page' => $body->page,
'prev_page' => $body->prev_page,
'next_page' => $body->next_page,
'total_pages' => $body->total_pages,
],
];
}
/**
* @return array
*/
public function findAllSlider(): array {
$site = $this->requestStack->getCurrentRequest()->getLocale();
$client = new Client();
$response = $client->request('GET', "https://content.europeanfilmchallenge.eu/{$site}/movies/slider", [
'headers' => [
'Accept' => 'application/json',
],
]);
$body = json_decode($response->getBody());
$movies = $body->items;
return [
'data' => collect($movies)->map(function ($movie) {
return Movie::create($movie);
}),
];
}
/**
* @param string $uid
*
* @return Movie
*/
public function findOneByUid(string $uid): Movie
{
$site = $this->requestStack->getCurrentRequest()->getLocale();
$client = new Client();
$response = $client->request('GET', "https://content.europeanfilmchallenge.eu/{$site}/movie/{$uid}", [
'headers' => [
'Accept' => 'application/json',
]
]);
$body = json_decode($response->getBody());
$movie = (object)$body->movie;
return Movie::create((object)$movie);
}
}