Example #1
0
 /**
  * @param integer $id
  * @param string $country
  * @param bool $includeTracks
  * @return Album|null
  * @throws AlbumNotFoundException
  */
 public function fetchById($id, $country = self::DEFAULT_COUNTRY, $includeTracks = null)
 {
     $results = $this->lookup(sprintf($includeTracks ? self::ALBUM_TRACKS_QUERY : self::ALBUM_QUERY, (int) $id, $country));
     if ($results === false) {
         throw new AlbumNotFoundException($id);
     }
     $album = null;
     $tracks = [];
     foreach ($results as $result) {
         switch ($result->wrapperType) {
             case self::IDENTIFIER_ALBUM:
                 /** @var Album $album */
                 $album = AlbumMapper::map($result);
                 break;
             case self::IDENTIFIER_TRACK:
                 $tracks[] = TrackMapper::map($result);
                 break;
         }
     }
     if ($album) {
         if (!empty($tracks)) {
             $album->setTracks(new Collection($tracks));
         }
     }
     return $album;
 }
Example #2
0
 /**
  * @param string $name
  * @param string $country
  * @return Track[]
  * @throws SearchNoResultsException
  */
 public function fetchByName($name, $country = self::DEFAULT_COUNTRY)
 {
     $results = $this->search(sprintf(self::TRACK_SEARCH_QUERY, urlencode($name), $country));
     if ($results === false) {
         throw new SearchNoResultsException($name);
     }
     $albums = [];
     foreach ($results as $result) {
         $albums[] = TrackMapper::map($result);
     }
     return new SearchResults($albums);
 }
Example #3
0
 public function getMappers()
 {
     return [[ArtistMapper::map($this->getDataObject('artist')), 'Jacoz\\ItunesApi\\Entities\\Artist'], [AlbumMapper::map($this->getDataObject('album')), 'Jacoz\\ItunesApi\\Entities\\Album'], [TrackMapper::map($this->getDataObject('track')), 'Jacoz\\ItunesApi\\Entities\\Track']];
 }