Simplify PSR-4 autoload
This commit is contained in:
parent
65ccf95437
commit
d127964eff
12 changed files with 81 additions and 84 deletions
146
classes/Controller/BaseController.php
Normal file
146
classes/Controller/BaseController.php
Normal file
|
@ -0,0 +1,146 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* BaseController class.
|
||||
*/
|
||||
|
||||
namespace Alltube\Controller;
|
||||
|
||||
use Alltube\Config;
|
||||
use Alltube\Library\Downloader;
|
||||
use Alltube\Library\Video;
|
||||
use Alltube\LocaleManager;
|
||||
use Alltube\SessionManager;
|
||||
use Aura\Session\Segment;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Slim\Http\Request;
|
||||
use Slim\Http\Response;
|
||||
|
||||
/**
|
||||
* Abstract class used by every controller.
|
||||
*/
|
||||
abstract class BaseController
|
||||
{
|
||||
/**
|
||||
* Current video.
|
||||
*
|
||||
* @var Video
|
||||
*/
|
||||
protected $video;
|
||||
|
||||
/**
|
||||
* Default youtube-dl format.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $defaultFormat = 'best/bestvideo';
|
||||
|
||||
/**
|
||||
* Slim dependency container.
|
||||
*
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
protected $container;
|
||||
|
||||
/**
|
||||
* Config instance.
|
||||
*
|
||||
* @var Config
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* Session segment used to store session variables.
|
||||
*
|
||||
* @var Segment
|
||||
*/
|
||||
protected $sessionSegment;
|
||||
|
||||
/**
|
||||
* LocaleManager instance.
|
||||
*
|
||||
* @var LocaleManager
|
||||
*/
|
||||
protected $localeManager;
|
||||
|
||||
/**
|
||||
* Downloader instance.
|
||||
*
|
||||
* @var Downloader
|
||||
*/
|
||||
protected $downloader;
|
||||
|
||||
/**
|
||||
* BaseController constructor.
|
||||
*
|
||||
* @param ContainerInterface $container Slim dependency container
|
||||
*/
|
||||
public function __construct(ContainerInterface $container)
|
||||
{
|
||||
$this->config = Config::getInstance();
|
||||
$this->container = $container;
|
||||
$session = SessionManager::getSession();
|
||||
$this->sessionSegment = $session->getSegment(self::class);
|
||||
$this->localeManager = $this->container->get('locale');
|
||||
$this->downloader = $this->config->getDownloader();
|
||||
|
||||
if (!$this->config->stream) {
|
||||
// Force HTTP if stream is not enabled.
|
||||
$this->defaultFormat = Config::addHttpToFormat($this->defaultFormat);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get video format from request parameters or default format if none is specified.
|
||||
*
|
||||
* @param Request $request PSR-7 request
|
||||
*
|
||||
* @return string format
|
||||
*/
|
||||
protected function getFormat(Request $request)
|
||||
{
|
||||
$format = $request->getQueryParam('format');
|
||||
if (!isset($format)) {
|
||||
$format = $this->defaultFormat;
|
||||
}
|
||||
|
||||
return $format;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the password entered for the current video.
|
||||
*
|
||||
* @param Request $request PSR-7 request
|
||||
*
|
||||
* @return string Password
|
||||
*/
|
||||
protected function getPassword(Request $request)
|
||||
{
|
||||
$url = $request->getQueryParam('url');
|
||||
|
||||
$password = $request->getParam('password');
|
||||
if (isset($password)) {
|
||||
$this->sessionSegment->setFlash($url, $password);
|
||||
} else {
|
||||
$password = $this->sessionSegment->getFlash($url);
|
||||
}
|
||||
|
||||
return $password;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display an user-friendly error.
|
||||
*
|
||||
* @param Request $request PSR-7 request
|
||||
* @param Response $response PSR-7 response
|
||||
* @param string $message Error message
|
||||
*
|
||||
* @return Response HTTP response
|
||||
*/
|
||||
protected function displayError(Request $request, Response $response, $message)
|
||||
{
|
||||
$controller = new FrontController($this->container);
|
||||
|
||||
return $controller->displayError($request, $response, $message);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue