Add Silex FFMpegServiceProvider
This commit is contained in:
parent
d98dabe9c3
commit
20a3c21d82
3 changed files with 122 additions and 0 deletions
|
|
@ -38,6 +38,10 @@ abstract class Binary implements AdapterInterface
|
|||
*/
|
||||
public function __construct($binary, Logger $logger)
|
||||
{
|
||||
if (!is_executable($binary)) {
|
||||
throw new \FFMpeg\Exception\BinaryNotFoundException(sprintf('`%s` is not a valid binary', $binary));
|
||||
}
|
||||
|
||||
$this->binary = $binary;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
|
|
|||
46
src/FFMpeg/FFMpegServiceProvider.php
Normal file
46
src/FFMpeg/FFMpegServiceProvider.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
namespace FFMpeg;
|
||||
|
||||
use FFMpeg\FFMpeg;
|
||||
use FFMpeg\FFProbe;
|
||||
use Monolog\Logger;
|
||||
use Monolog\Handler\NullHandler;
|
||||
use Silex\Application;
|
||||
use Silex\ServiceProviderInterface;
|
||||
|
||||
class FFMpegServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
|
||||
public function register(Application $app)
|
||||
{
|
||||
if ( ! isset($app['ffmpeg.logger'])) {
|
||||
$app['ffmpeg.logger'] = $app->share(function(Application $app) {
|
||||
$logger = new Logger('FFMpeg logger');
|
||||
$logger->pushHandler(new NullHandler());
|
||||
|
||||
return $logger;
|
||||
});
|
||||
}
|
||||
|
||||
$app['ffmpeg.ffmpeg'] = $app->share(function(Application $app) {
|
||||
if (isset($app['ffmpeg.ffmpeg.binary'])) {
|
||||
return new FFMpeg($app['ffmpeg.ffmpeg.binary'], $app['ffmpeg.logger']);
|
||||
} else {
|
||||
return FFMpeg::load($app['ffmpeg.logger']);
|
||||
}
|
||||
});
|
||||
|
||||
$app['ffmpeg.ffprobe'] = $app->share(function(Application $app) {
|
||||
if (isset($app['ffmpeg.ffprobe.binary'])) {
|
||||
return new FFProbe($app['ffmpeg.ffprobe.binary'], $app['ffmpeg.logger']);
|
||||
} else {
|
||||
return FFProbe::load($app['ffmpeg.logger']);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function boot(Application $app)
|
||||
{
|
||||
}
|
||||
}
|
||||
72
tests/src/FFMpeg/FFMpegServiceProviderTest.php
Normal file
72
tests/src/FFMpeg/FFMpegServiceProviderTest.php
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
|
||||
namespace FFMpeg;
|
||||
|
||||
use Monolog\Logger;
|
||||
use Monolog\Handler\NullHandler;
|
||||
use Silex\Application;
|
||||
|
||||
class FFMpegServiceProviderTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
private function getApplication()
|
||||
{
|
||||
return new Application();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FFMpeg\FFMpegServiceProvider::register
|
||||
*/
|
||||
public function testRegister()
|
||||
{
|
||||
$app = $this->getApplication();
|
||||
|
||||
$app->register(new FFMpegServiceProvider());
|
||||
|
||||
$this->assertInstanceOf('\\FFMpeg\\FFProbe', $app['ffmpeg.ffprobe']);
|
||||
$this->assertInstanceOf('\\FFMpeg\\FFMpeg', $app['ffmpeg.ffmpeg']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException FFMpeg\Exception\BinaryNotFoundException
|
||||
* @covers FFMpeg\FFMpegServiceProvider::register
|
||||
*/
|
||||
public function testRegisterFFMpegFails()
|
||||
{
|
||||
$app = $this->getApplication();
|
||||
$app->register(new FFMpegServiceProvider(), array('ffmpeg.ffmpeg.binary' => '/path/to/no/ffmpeg'));
|
||||
|
||||
$app['ffmpeg.ffmpeg'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException FFMpeg\Exception\BinaryNotFoundException
|
||||
* @covers FFMpeg\FFMpegServiceProvider::register
|
||||
*/
|
||||
public function testRegisterFFProbeFails()
|
||||
{
|
||||
$app = $this->getApplication();
|
||||
$app->register(new FFMpegServiceProvider(), array('ffmpeg.ffprobe.binary' => '/path/to/no/ffprobe'));
|
||||
|
||||
$app['ffmpeg.ffprobe'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FFMpeg\FFMpegServiceProvider::register
|
||||
*/
|
||||
public function testRegisterCustomLogger()
|
||||
{
|
||||
$app = $this->getApplication();
|
||||
$app['logger'] = $app->share(function(Application $app){
|
||||
$logger = new Logger('tests');
|
||||
$logger->pushHandler(new NullHandler());
|
||||
|
||||
return $logger;
|
||||
});
|
||||
$app->register(new FFMpegServiceProvider());
|
||||
|
||||
$this->assertInstanceOf('\\FFMpeg\\FFProbe', $app['ffmpeg.ffprobe']);
|
||||
$this->assertInstanceOf('\\FFMpeg\\FFMpeg', $app['ffmpeg.ffmpeg']);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue