fixup! refactor: New Video class

This commit is contained in:
Pierre Rudloff 2019-04-21 18:35:24 +02:00
parent 4c9af8ad1d
commit 06a631c892
14 changed files with 23 additions and 40 deletions

View file

@ -141,9 +141,10 @@ class Config
/** /**
* Throw an exception if some of the options are invalid. * Throw an exception if some of the options are invalid.
* *
* @return void
* @throws Exception If youtube-dl is missing * @throws Exception If youtube-dl is missing
* @throws Exception If Python is missing * @throws Exception If Python is missing
*
* @return void
*/ */
private function validateOptions() private function validateOptions()
{ {
@ -223,8 +224,8 @@ class Config
/** /**
* Manually set some options. * Manually set some options.
* *
* @param array $options Options (see `config/config.example.yml` for available options) * @param array $options Options (see `config/config.example.yml` for available options)
* @param boolean $update True to update an existing instance * @param bool $update True to update an existing instance
*/ */
public static function setOptions(array $options, $update = true) public static function setOptions(array $options, $update = true)
{ {

View file

@ -8,8 +8,6 @@ namespace Alltube;
use Barracuda\ArchiveStream\TarArchive; use Barracuda\ArchiveStream\TarArchive;
use GuzzleHttp\Psr7\Stream; use GuzzleHttp\Psr7\Stream;
use Psr\Http\Message\StreamInterface; use Psr\Http\Message\StreamInterface;
use RuntimeException;
use stdClass;
/** /**
* Class used to create a Tar archive from playlists and stream it to the browser. * Class used to create a Tar archive from playlists and stream it to the browser.
@ -41,6 +39,7 @@ class PlaylistArchiveStream extends TarArchive implements StreamInterface
/** /**
* True if the archive is complete. * True if the archive is complete.
*
* @var bool * @var bool
*/ */
private $isComplete = false; private $isComplete = false;

View file

@ -26,19 +26,22 @@ class Video
private $config; private $config;
/** /**
* URL of the page containing the video * URL of the page containing the video.
*
* @var string * @var string
*/ */
private $webpageUrl; private $webpageUrl;
/** /**
* Requested video format * Requested video format.
*
* @var string * @var string
*/ */
private $requestedFormat; private $requestedFormat;
/** /**
* Password * Password.
*
* @var string * @var string
*/ */
private $password; private $password;
@ -68,6 +71,7 @@ class Video
private function getProcess(array $arguments) private function getProcess(array $arguments)
{ {
$config = Config::getInstance(); $config = Config::getInstance();
return new Process( return new Process(
array_merge( array_merge(
[$config->python, $config->youtubedl], [$config->python, $config->youtubedl],
@ -90,7 +94,7 @@ class Video
/** /**
* Get a property from youtube-dl. * Get a property from youtube-dl.
* *
* @param string $prop Property * @param string $prop Property
* *
* @throws PasswordException If the video is protected by a password and no password was specified * @throws PasswordException If the video is protected by a password and no password was specified
* @throws Exception If the password is wrong * @throws Exception If the password is wrong
@ -172,7 +176,7 @@ class Video
* *
* @param string $name Property * @param string $name Property
* *
* @return boolean * @return bool
*/ */
public function __isset($name) public function __isset($name)
{ {
@ -281,11 +285,11 @@ class Video
/** /**
* Get a process that runs avconv in order to convert a video. * Get a process that runs avconv in order to convert a video.
* *
* @param int $audioBitrate Audio bitrate of the converted file * @param int $audioBitrate Audio bitrate of the converted file
* @param string $filetype Filetype of the converted file * @param string $filetype Filetype of the converted file
* @param bool $audioOnly True to return an audio-only file * @param bool $audioOnly True to return an audio-only file
* @param string $from Start the conversion at this time * @param string $from Start the conversion at this time
* @param string $to End the conversion at this time * @param string $to End the conversion at this time
* *
* @throws Exception If avconv/ffmpeg is missing * @throws Exception If avconv/ffmpeg is missing
* *
@ -353,8 +357,8 @@ class Video
/** /**
* Get audio stream of converted video. * Get audio stream of converted video.
* *
* @param string $from Start the conversion at this time * @param string $from Start the conversion at this time
* @param string $to End the conversion at this time * @param string $to End the conversion at this time
* *
* @throws Exception If your try to convert an M3U8 video * @throws Exception If your try to convert an M3U8 video
* @throws Exception If the popen stream was not created correctly * @throws Exception If the popen stream was not created correctly
@ -526,7 +530,7 @@ class Video
*/ */
public function withFormat($format) public function withFormat($format)
{ {
return new Video($this->webpageUrl, $format, $this->password); return new self($this->webpageUrl, $format, $this->password);
} }
/** /**

View file

@ -6,18 +6,13 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\Config; use Alltube\Config;
use Alltube\Video;
use Alltube\PlaylistArchiveStream;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use RuntimeException;
use stdClass;
/** /**
* Unit tests for the ViewFactory class. * Unit tests for the ViewFactory class.
*/ */
abstract class BaseTest extends TestCase abstract class BaseTest extends TestCase
{ {
/** /**
* Prepare tests. * Prepare tests.
*/ */

View file

@ -6,7 +6,6 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\Config; use Alltube\Config;
use PHPUnit\Framework\TestCase;
/** /**
* Unit tests for the Config class. * Unit tests for the Config class.
@ -132,7 +131,6 @@ class ConfigTest extends BaseTest
Config::setOptions(['python' => 'foo']); Config::setOptions(['python' => 'foo']);
} }
/** /**
* Test the getInstance function with the CONVERT and PYTHON environment variables. * Test the getInstance function with the CONVERT and PYTHON environment variables.
* *

View file

@ -10,7 +10,6 @@ use Alltube\Controller\FrontController;
use Alltube\LocaleManager; use Alltube\LocaleManager;
use Alltube\ViewFactory; use Alltube\ViewFactory;
use Exception; use Exception;
use PHPUnit\Framework\TestCase;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;

View file

@ -7,7 +7,6 @@ namespace Alltube\Test;
use Alltube\Locale; use Alltube\Locale;
use Alltube\LocaleManager; use Alltube\LocaleManager;
use PHPUnit\Framework\TestCase;
/** /**
* Unit tests for the LocaleManagerTest class. * Unit tests for the LocaleManagerTest class.

View file

@ -8,7 +8,6 @@ namespace Alltube\Test;
use Alltube\Locale; use Alltube\Locale;
use Alltube\LocaleManager; use Alltube\LocaleManager;
use Alltube\LocaleMiddleware; use Alltube\LocaleMiddleware;
use PHPUnit\Framework\TestCase;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;

View file

@ -6,7 +6,6 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\Locale; use Alltube\Locale;
use PHPUnit\Framework\TestCase;
/** /**
* Unit tests for the LocaleTest class. * Unit tests for the LocaleTest class.

View file

@ -5,12 +5,8 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\Config;
use Alltube\Video;
use Alltube\PlaylistArchiveStream; use Alltube\PlaylistArchiveStream;
use PHPUnit\Framework\TestCase; use Alltube\Video;
use RuntimeException;
use stdClass;
/** /**
* Unit tests for the ViewFactory class. * Unit tests for the ViewFactory class.

View file

@ -6,7 +6,6 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\UglyRouter; use Alltube\UglyRouter;
use PHPUnit\Framework\TestCase;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;

View file

@ -5,11 +5,9 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\Config;
use Alltube\Video; use Alltube\Video;
use Mockery; use Mockery;
use phpmock\mockery\PHPMockery; use phpmock\mockery\PHPMockery;
use PHPUnit\Framework\TestCase;
/** /**
* Unit tests for the Video class. * Unit tests for the Video class.

View file

@ -7,14 +7,12 @@ namespace Alltube\Test;
use Alltube\Config; use Alltube\Config;
use Alltube\Video; use Alltube\Video;
use PHPUnit\Framework\TestCase;
/** /**
* Unit tests for the Video class. * Unit tests for the Video class.
*/ */
class VideoTest extends BaseTest class VideoTest extends BaseTest
{ {
/** /**
* Test getExtractors function. * Test getExtractors function.
* *

View file

@ -6,7 +6,6 @@
namespace Alltube\Test; namespace Alltube\Test;
use Alltube\ViewFactory; use Alltube\ViewFactory;
use PHPUnit\Framework\TestCase;
use Slim\Container; use Slim\Container;
use Slim\Http\Environment; use Slim\Http\Environment;
use Slim\Http\Request; use Slim\Http\Request;