parent
196d0b1338
commit
25f33bba56
10 changed files with 904 additions and 703 deletions
112
controllers/BaseController.php
Normal file
112
controllers/BaseController.php
Normal file
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
/**
|
||||
* BaseController class.
|
||||
*/
|
||||
|
||||
namespace Alltube\Controller;
|
||||
|
||||
use Alltube\Config;
|
||||
use Alltube\Video;
|
||||
use Aura\Session\Segment;
|
||||
use Aura\Session\SessionFactory;
|
||||
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[protocol=https]/best[protocol=http]';
|
||||
|
||||
/**
|
||||
* Slim dependency container.
|
||||
*
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
protected $container;
|
||||
|
||||
/**
|
||||
* Config instance.
|
||||
*
|
||||
* @var Config
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* Session segment used to store session variables.
|
||||
*
|
||||
* @var Segment
|
||||
*/
|
||||
protected $sessionSegment;
|
||||
|
||||
/**
|
||||
* BaseController constructor.
|
||||
*
|
||||
* @param ContainerInterface $container Slim dependency container
|
||||
* @param array $cookies Cookie array
|
||||
*/
|
||||
public function __construct(ContainerInterface $container, array $cookies = [])
|
||||
{
|
||||
$this->config = Config::getInstance();
|
||||
$this->container = $container;
|
||||
$session_factory = new SessionFactory();
|
||||
$session = $session_factory->newInstance($cookies);
|
||||
$this->sessionSegment = $session->getSegment(self::class);
|
||||
|
||||
if ($this->config->stream) {
|
||||
$this->defaultFormat = 'best';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue