Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Architecture enhancement #8

Merged
merged 2 commits into from
Dec 14, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#Php-MediaInfo
#Php-MediaInfo [![Build Status](https://travis-ci.org/mhor/php-mediainfo.svg?branch=master)](https://travis-ci.org/mhor/php-mediainfo) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/mhor/php-mediainfo/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/mhor/php-mediainfo/?branch=master) [![Coverage Status](https://img.shields.io/coveralls/mhor/php-mediainfo.svg)](https://coveralls.io/r/mhor/php-mediainfo?branch=master)

## Introduction
PHP library to run `mediainfo` command
Expand Down
10 changes: 9 additions & 1 deletion src/Attribute/AbstractAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

namespace Mhor\MediaInfo\Attribute;

abstract class AbstractAttribute
abstract class AbstractAttribute implements AttributeInterface
{
/**
* @param $attribute
* @return bool
*/
public function isMember($attribute)
{
return in_array($attribute, $this::getMembersFields());
}
}
14 changes: 14 additions & 0 deletions src/Attribute/AttributeInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Mhor\MediaInfo\Attribute;

interface AttributeInterface
{
public static function getMembersFields();

/**
* @param mixed $value
* @return mixed
*/
public static function create($value);
}
21 changes: 20 additions & 1 deletion src/Attribute/Cover.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,19 @@ class Cover extends AbstractAttribute

/**
* @param string $value
* @return Cover
*/
public function __construct($value)
public static function create($value)
{
$cover = new Cover();
$cover->setBinaryCover($value);
return $cover;
}

/**
* @param string $value
*/
public function setBinaryCover($value)
{
$this->binaryCover = $value;
}
Expand All @@ -24,4 +35,12 @@ public function getBinaryCover()
{
return $this->binaryCover;
}

/**
* @return array
*/
public static function getMembersFields()
{
return array('cover_data');
}
}
27 changes: 27 additions & 0 deletions src/Attribute/DateTime.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Mhor\MediaInfo\Attribute;

class DateTime extends AbstractAttribute
{

/**
* @param string $value
* @return \DateTime
*/
public static function create($value)
{
return new \DateTime($value);
}

/**
* @return array
*/
public static function getMembersFields()
{
return array(
'file_last_modification_date',
'file_last_modification_date__local_'
);
}
}
23 changes: 21 additions & 2 deletions src/Attribute/Duration.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,21 @@ class Duration extends AbstractAttribute

/**
* @param array $durations
* @return Duration
*/
public function __construct(array $durations)
public static function create($durations)
{
$this->milliseconds = $durations[0];
$duration = new Duration();
$duration->setMilliseconds($durations[0]);
return $duration;
}

/**
* @param int $milliseconds
*/
public function setMilliseconds($milliseconds)
{
$this->milliseconds = $milliseconds;
}

/**
Expand All @@ -24,4 +35,12 @@ public function getMilliseconds()
{
return $this->milliseconds;
}

/**
* @return array
*/
public static function getMembersFields()
{
return array('duration');
}
}
45 changes: 42 additions & 3 deletions src/Attribute/Mode.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,32 @@ class Mode extends AbstractAttribute
*/
private $fullName;

public function __construct(array $rateMode)
/**
* @param mixed $rateMode
* @return Mode
*/
public static function create($rateMode)
{
$this->shortName = $rateMode[0];
$this->fullName = $rateMode[1];
$mode = new Mode();
$mode->setShortName($rateMode[0]);
$mode->setFullName($rateMode[1]);
return $mode;
}

/**
* @param string $fullName
*/
public function setFullName($fullName)
{
$this->fullName = $fullName;
}

/**
* @param string $shortName
*/
public function setShortName($shortName)
{
$this->shortName = $shortName;
}

/**
Expand All @@ -35,4 +57,21 @@ public function getShortName()
{
return $this->shortName;
}

/**
* @return array
*/
public static function getMembersFields()
{
return array(
'overall_bit_rate_mode',
'overall_bit_rate',
'bit_rate_mode',
'compression_mode',
'codec',
'format',
'kind_of_stream',
'writing_library',
);
}
}
54 changes: 51 additions & 3 deletions src/Attribute/Rate.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,58 @@ class Rate extends AbstractAttribute

/**
* @param array $value
*
* @return Rate
*/
public function __construct(array $value)
public static function create($value)
{
$this->absoluteValue = $value[0];
$this->textValue = $value[1];
$rate = new Rate();
$rate->setAbsoluteValue($value[0]);
$rate->setTextValue($value[1]);
return $rate;
}

/**
* @return int
*/
public function getAbsoluteValue()
{
return $this->absoluteValue;
}

/**
* @param int $absoluteValue
*/
public function setAbsoluteValue($absoluteValue)
{
$this->absoluteValue = $absoluteValue;
}

/**
* @return string
*/
public function getTextValue()
{
return $this->textValue;
}

/**
* @param string $textValue
*/
public function setTextValue($textValue)
{
$this->textValue = $textValue;
}

/**
* @return array
*/
public static function getMembersFields()
{
return array(
'channel_s_',
'bit_rate',
'sampling_rate',
);
}
}
27 changes: 25 additions & 2 deletions src/Attribute/Size.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,22 @@ class Size extends AbstractAttribute

/**
* @param array $sizes
*
* @return Size
*/
public function __construct(array $sizes)
public static function create($sizes)
{
$this->bit = $sizes[0];
$size = new Size();
$size->setBit($sizes[0]);
return $size;
}

/**
* @param int $bit
*/
public function setBit($bit)
{
$this->bit = $bit;
}

/**
Expand All @@ -24,4 +36,15 @@ public function getBit()
{
return $this->bit;
}

/**
* @return array
*/
public static function getMembersFields()
{
return array(
'file_size',
'stream_size',
);
}
}
2 changes: 1 addition & 1 deletion src/Builder/MediaInfoContainerBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ private function addAttributes(AbstractType $trackType, $attributes)
$attribute = $this->formatAttribute($attribute);
$trackType->set(
$attribute,
AttributeFactory::create(get_class($trackType), $attribute, $value)
AttributeFactory::create($attribute, $value)
);
}
}
Expand Down
47 changes: 31 additions & 16 deletions src/Factory/AttributeFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,45 @@
namespace Mhor\MediaInfo\Factory;

use Mhor\MediaInfo\Attribute\AbstractAttribute;
use Mhor\MediaInfo\Attribute\Cover;
use Mhor\MediaInfo\Attribute\DateTime;
use Mhor\MediaInfo\Attribute\Duration;
use Mhor\MediaInfo\Attribute\Mode;
use Mhor\MediaInfo\Attribute\Rate;
use Mhor\MediaInfo\Attribute\Size;
use Mhor\MediaInfo\Container\MediaInfoContainer;

class AttributeFactory
{
/**
* @param string $attributeTypeClass
* @param string $attribute
* @param $attribute
* @param $value
* @return \DateTime|AbstractAttribute
* @throws \Exception
* @return AbstractAttribute
*/
public static function create($attributeTypeClass, $attribute, $value)
public static function create($attribute, $value)
{
switch ($attributeTypeClass) {
case MediaInfoContainer::VIDEO_CLASS:
return VideoAttributeFactory::create($attribute, $value);
case MediaInfoContainer::AUDIO_CLASS:
return AudioAttributeFactory::create($attribute, $value);
case MediaInfoContainer::IMAGE_CLASS:
return ImageAttributeFactory::create($attribute, $value);
case MediaInfoContainer::GENERAL_CLASS:
return GeneralAttributeFactory::create($attribute, $value);
default:
throw new \Exception('Type doesn\'t exist');
$attributesType = self::getAllAttributeType();
foreach($attributesType as $attributeType) {
if ($attributeType->isMember($attribute)) {
return $attributeType::create($value);
}
}

return $value;
}

/**
* @return AbstractAttribute[]
*/
private static function getAllAttributeType()
{
return array(
new Cover(),
new Duration(),
new Mode(),
new Rate(),
new Size(),
new DateTime(),
);
}
}
18 changes: 0 additions & 18 deletions src/Factory/AudioAttributeFactory.php

This file was deleted.

Loading