示例#1
0
 /**
  * {@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;
 }
示例#2
0
 /**
  * {@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);
 }