/** * @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; }
/** * @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); }
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']]; }