Example #1
0
 public function getDownload($id, $extension)
 {
     $playlist = Playlist::with('tracks', 'user', 'tracks.album')->find($id);
     if (!$playlist || !$playlist->is_public && !Auth::check() || !$playlist->is_public && $playlist->user_id !== Auth::user()->id) {
         App::abort(404);
     }
     $format = null;
     $formatName = null;
     foreach (Track::$Formats as $name => $item) {
         if ($item['extension'] == $extension) {
             $format = $item;
             $formatName = $name;
             break;
         }
     }
     if ($format == null) {
         App::abort(404);
     }
     ResourceLogItem::logItem('playlist', $id, ResourceLogItem::DOWNLOAD, $format['index']);
     $downloader = new PlaylistDownloader($playlist, $formatName);
     $downloader->download();
 }
Example #2
0
 public function getCachedPlaylist($id, $format)
 {
     // Validation
     try {
         /** @var $playlist Playlist */
         $playlist = Playlist::with('tracks.trackFiles')->findOrFail($id);
     } catch (ModelNotFoundException $e) {
         return $this->notFound('Playlist not found!');
     }
     if (!$playlist->is_public && !Auth::check() || !$playlist->is_public && $playlist->user_id !== Auth::user()->id) {
         return $this->notFound('Playlist not found!');
     }
     if (!in_array($format, Track::$CacheableFormats)) {
         return $this->notFound('Format not found!');
     }
     $trackCount = $playlist->countDownloadableTracks($format);
     $availableFilesCount = $playlist->countAvailableTrackFiles($format);
     if ($trackCount === $availableFilesCount) {
         $url = $playlist->getDownloadUrl($format);
     } else {
         $playlist->encodeCacheableTrackFiles($format);
         $url = null;
     }
     return Response::json(['url' => $url], 200);
 }