private function routeAction($mediafile, $pathfile_dest, SpecificationInterface $specs) { $route = sprintf('%s-%s', $mediafile->getType(), $specs->getType()); switch ($route) { case sprintf('%s-%s', MediaInterface::TYPE_AUDIO, SpecificationInterface::TYPE_IMAGE): throw new RuntimeException('Not transmuter avalaible... Implement it !'); break; case sprintf('%s-%s', MediaInterface::TYPE_AUDIO, SpecificationInterface::TYPE_VIDEO): throw new RuntimeException('Not transmuter avalaible... Implement it !'); break; case sprintf('%s-%s', MediaInterface::TYPE_AUDIO, SpecificationInterface::TYPE_AUDIO): $transmuter = new Audio2Audio($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_FLASH, SpecificationInterface::TYPE_IMAGE): $transmuter = new Flash2Image($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_DOCUMENT, SpecificationInterface::TYPE_IMAGE): $transmuter = new Document2Image($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_DOCUMENT, SpecificationInterface::TYPE_SWF): $transmuter = new Document2Flash($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_IMAGE, SpecificationInterface::TYPE_IMAGE): $transmuter = new Image2Image($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_VIDEO, SpecificationInterface::TYPE_IMAGE): $transmuter = new Video2Image($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_VIDEO, SpecificationInterface::TYPE_ANIMATION): $transmuter = new Video2Animation($this->drivers, $this->tmpFileManager); break; case sprintf('%s-%s', MediaInterface::TYPE_VIDEO, SpecificationInterface::TYPE_VIDEO): $transmuter = new Video2Video($this->drivers, $this->tmpFileManager); break; default: throw new RuntimeException(sprintf('Not transmuter avalaible for `%s` Implement it !', $route)); break; } $transmuter->execute($specs, $mediafile, $pathfile_dest); return $this; }
/** * Get the extension from MediaAlchemyst specs * * @param SpecificationInterface $spec * * @return string */ private function getExtensionFromSpec(SpecificationInterface $spec) { $extension = null; switch (true) { case $spec->getType() === SpecificationInterface::TYPE_IMAGE: $extension = 'jpg'; break; case $spec->getType() === SpecificationInterface::TYPE_ANIMATION: $extension = 'gif'; break; case $spec->getType() === SpecificationInterface::TYPE_AUDIO: $extension = $this->getExtensionFromAudioCodec($spec->getAudioCodec()); break; case $spec->getType() === SpecificationInterface::TYPE_VIDEO: $extension = $this->getExtensionFromVideoCodec($spec->getVideoCodec()); break; case $spec->getType() === SpecificationInterface::TYPE_SWF: $extension = 'swf'; break; } return $extension; }