/** * {@inheritdoc} * * @return SeriesResponse * @throws InvalidXmlInResponseException */ public function handle() { $data = $this->getData('Data'); if (!is_array($data)) { throw new InvalidXmlInResponseException('Invalid XML in response'); } if (!array_key_exists('Series', $data)) { return new SeriesResponse(); } $keys = array_keys($data['Series']); $series = []; if (is_numeric($keys[0])) { foreach ($data['Series'] as $seriesData) { $series[] = $this->getSeriesFromArray($seriesData); } } else { $series = $this->getSeriesFromArray($data['Series']); if (!empty($data['Episode'])) { if (is_numeric(array_keys($data['Episode'])[0])) { foreach ($data['Episode'] as $episodeData) { $series->addEpisode(EpisodeResponseHandler::getEpisodeFromArray($episodeData)); } } else { $series->addEpisode(EpisodeResponseHandler::getEpisodeFromArray($data['Episode'])); } } $series = [$series]; } return $series; }
/** * {@inheritdoc} * * @throws \RuntimeException */ public function getEpisodeByAirDate($seriesId, \DateTime $airDate, Language $language = null) { $query = ['apikey' => $this->apiKey, 'seriesid' => $seriesId, 'airdate' => $airDate->format('Y-m-d')]; if ($language !== null) { $query['language'] = $language->getCode(); } $xml = $this->performApiCallWithCachedXmlResponse(static::API_PATH_EPISODE, ['query' => $query]); $handler = new EpisodeResponseHandler($xml); return $handler->handle(); }
/** * @dataProvider responseDataProvider * * @param array $data xml response data in array */ public function testGetEpisodeFromArray(array $data) { $episode = EpisodeResponseHandler::getEpisodeFromArray($data); self::assertInstanceOf('Adrenth\\Thetvdb\\Episode', $episode); }