diff --git a/src/app/Controllers/BasicController.php b/src/app/Controllers/BasicController.php index 9d96898..c4dc24c 100644 --- a/src/app/Controllers/BasicController.php +++ b/src/app/Controllers/BasicController.php @@ -55,30 +55,4 @@ class BasicController $view = Twig::fromRequest($request); return $view->render($response, $template, $data); } - - /** - * Возвращает плейлист по его ID для обработки - * - * @param string $id - * @param bool $asJson - * @return Playlist - * @throws Exception - */ - protected function getPlaylist(string $id, bool $asJson = false): Playlist - { - ini()->load(); - - if (ini()->getRedirection($id)) { - $redirectTo = base_url(ini()->getRedirection($id) . ($asJson ? '/json' : '/details')); - Flight::redirect($redirectTo); - die; - } - - try { - return ini()->getPlaylist($id); - } catch (PlaylistNotFoundException) { - $this->notFound($id, $asJson); - die; - } - } } diff --git a/src/app/Controllers/WebController.php b/src/app/Controllers/WebController.php index b11308e..b346865 100644 --- a/src/app/Controllers/WebController.php +++ b/src/app/Controllers/WebController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Controllers; use App\Core\ChannelLogo; +use App\Errors\PlaylistNotFoundException; use Exception; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -67,9 +68,14 @@ class WebController extends BasicController */ public function redirect(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { + ini()->load(); $code = $request->getAttributes()['code']; - $playlist = $this->getPlaylist($code); - return $response->withHeader('Location', $playlist->pls); + try { + $playlist = ini()->getPlaylist($code); + return $response->withHeader('Location', $playlist->pls); + } catch (PlaylistNotFoundException) { + return $this->notFound($request, $response); + } } /** @@ -83,8 +89,15 @@ class WebController extends BasicController */ public function details(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { + ini()->load(); $code = $request->getAttributes()['code']; - $playlist = $this->getPlaylist($code); + try { + $playlist = ini()->getPlaylist($code); + $response->withHeader('Location', $playlist->pls); + } catch (PlaylistNotFoundException) { + return $this->notFound($request, $response); + } + $playlist->fetchContent(); $playlist->parse();