diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ec1e61b..4d57f3a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-versions: ['7.1', '7.2', '7.3', '7.4'] + php-versions: ['7.4'] name: PHP ${{ matrix.php-versions }} steps: - name: 📤 Checkout project @@ -36,7 +36,7 @@ jobs: - name: 🐘 Install PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.1 + php-version: 7.4 tools: composer - name: 📦 Install dependencies @@ -55,7 +55,7 @@ jobs: - name: 🐘 Install PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.1 + php-version: 7.4 tools: composer - name: 📦 Install dependencies diff --git a/README.md b/README.md index 18f4b02c..1c8f69b3 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Then, set up the search-v3 `SearchClient` like this: ```php $searchClient = new CultuurNet\SearchV3\SearchClient( $httpClient, // HTTP client set up in the previous step - new CultuurNet\SearchV3\Serializer() // Built-in serializer to deserialize the JSON responses + new CultuurNet\SearchV3\Serializer\Serializer() // Built-in serializer to deserialize the JSON responses ); ``` diff --git a/src/ValueObjects/Offer.php b/src/ValueObjects/Offer.php index da38103c..8f6ab9b8 100644 --- a/src/ValueObjects/Offer.php +++ b/src/ValueObjects/Offer.php @@ -114,6 +114,12 @@ abstract class Offer */ private $mediaObjects = []; + /** + * @var Video[] + * @Type("array") + */ + private $videos = []; + /** * @var Organizer|null * @Type("CultuurNet\SearchV3\ValueObjects\Organizer") @@ -350,6 +356,22 @@ public function setMediaObjects(array $mediaObjects): void $this->mediaObjects = $mediaObjects; } + /** + * @return Video[] + */ + public function getVideos(): array + { + return $this->videos; + } + + /** + * @param Video[] $videos + */ + public function setVideos(array $videos): void + { + $this->videos = $videos; + } + public function getMainMediaObject(): ?MediaObject { $mediaObjects = $this->getMediaObjects(); diff --git a/src/ValueObjects/Video.php b/src/ValueObjects/Video.php new file mode 100644 index 00000000..40fd9b06 --- /dev/null +++ b/src/ValueObjects/Video.php @@ -0,0 +1,90 @@ +id; + } + + public function setId(string $id): void + { + $this->id = $id; + } + + public function getLanguage(): string + { + return $this->language; + } + + public function setLanguage(string $language): void + { + $this->language = $language; + } + + public function getUrl(): string + { + return $this->url; + } + + public function setUrl(string $url): void + { + $this->url = $url; + } + + public function getEmbedUrl(): string + { + return $this->embedUrl; + } + + public function setEmbedUrl(string $embedUrl): void + { + $this->embedUrl = $embedUrl; + } + + public function getCopyrightHolder(): ?string + { + return $this->copyrightHolder; + } + + public function setCopyrightHolder(?string $copyrightHolder): void + { + $this->copyrightHolder = $copyrightHolder; + } +} diff --git a/test/Serializer/SerializerTest.php b/test/Serializer/SerializerTest.php index 700bc6e2..403ef735 100644 --- a/test/Serializer/SerializerTest.php +++ b/test/Serializer/SerializerTest.php @@ -23,6 +23,7 @@ use CultuurNet\SearchV3\ValueObjects\Term; use CultuurNet\SearchV3\ValueObjects\TranslatedAddress; use CultuurNet\SearchV3\ValueObjects\TranslatedString; +use CultuurNet\SearchV3\ValueObjects\Video; use PHPUnit\Framework\TestCase; final class SerializerTest extends TestCase @@ -200,6 +201,20 @@ public function testDeserializeMethodForResultsWithEmbedAndFacets(): void $event->setMediaObjects([$mediaObject]); $event->setImage('https://io.uitdatabank.be/images/e65ef366-65a0-4172-a0fe-6844655ad6b9.jpeg'); + $video1 = new Video(); + $video1->setId('6d787098-3082-4a0f-a510-1df4597ae02f'); + $video1->setUrl('https://www.youtube.com/watch?v=cEItmb_a20D'); + $video1->setEmbedUrl('https://www.youtube.com/embed/cEItmb_a20D'); + $video1->setLanguage('nl'); + $video1->setCopyrightHolder('Copyright afgehandeld door YouTube'); + $video2 = new Video(); + $video2->setId('192a07d9-049b-4c2a-bc94-e46b7a557529'); + $video2->setUrl('https://www.youtube.com/watch?v=sXYtmb_q19C'); + $video2->setEmbedUrl('https://www.youtube.com/embed/sXYtmb_q19C'); + $video2->setLanguage('fr'); + $video2->setCopyrightHolder('publiq'); + $event->setVideos([$video1, $video2]); + $priceInfo = new PriceInfo(); $priceInfo->setCategory('base'); $priceInfo->setName(new TranslatedString([ diff --git a/test/Serializer/data/search-with-embed-and-facets.json b/test/Serializer/data/search-with-embed-and-facets.json index ab14ea89..abc07de9 100644 --- a/test/Serializer/data/search-with-embed-and-facets.json +++ b/test/Serializer/data/search-with-embed-and-facets.json @@ -174,6 +174,22 @@ } ], "image": "https://io.uitdatabank.be/images/e65ef366-65a0-4172-a0fe-6844655ad6b9.jpeg", + "videos": [ + { + "id": "6d787098-3082-4a0f-a510-1df4597ae02f", + "url": "https://www.youtube.com/watch?v=cEItmb_a20D", + "embedUrl": "https://www.youtube.com/embed/cEItmb_a20D", + "language": "nl", + "copyrightHolder": "Copyright afgehandeld door YouTube" + }, + { + "id": "192a07d9-049b-4c2a-bc94-e46b7a557529", + "url": "https://www.youtube.com/watch?v=sXYtmb_q19C", + "embedUrl": "https://www.youtube.com/embed/sXYtmb_q19C", + "language": "fr", + "copyrightHolder": "publiq" + } + ], "organizer": { "@type": "Organizer", "@id": "https://io.uitdatabank.be/organizers/50c2e3f1-1f40-47a0-a72f-265ede8048fb",