diff --git a/src/CustomMimetypeHelper.php b/src/CustomMimetypeHelper.php new file mode 100644 index 0000000..9f3f0d9 --- /dev/null +++ b/src/CustomMimetypeHelper.php @@ -0,0 +1,51 @@ + + */ +class CustomMimetypeHelper extends ApacheMimetypeHelper +{ + /** + * @var array + */ + private $mimetypes = []; + + /** + * @param array $mimetypes should be of type extension => mimetype + */ + public function __construct(array $mimetypes = []) + { + $this->mimetypes = $mimetypes; + } + + /** + * @param string $extension + * @param string $mimetype + * + * @return $this + */ + public function addMimetype($extension, $mimetype) + { + $this->mimetypes[$extension] = $mimetype; + + return $this; + } + + /** + * {@inheritdoc} + * + * Check if we have any defined mimetypes and of not fallback to ApacheMimetypeHelper + */ + public function getMimetypeFromExtension($extension) + { + $extension = strtolower($extension); + + return isset($this->mimetypes[$extension]) + ? $this->mimetypes[$extension] + : parent::getMimetypeFromExtension($extension); + } +} diff --git a/tests/CustomMimetypeHelperTest.php b/tests/CustomMimetypeHelperTest.php new file mode 100644 index 0000000..d8d1f10 --- /dev/null +++ b/tests/CustomMimetypeHelperTest.php @@ -0,0 +1,18 @@ +'foo/bar']); + $this->assertEquals('foo/bar', $helper->getMimetypeFromExtension('foo')); + + $this->assertEquals('application/x-rar-compressed', $helper->getMimetypeFromExtension('rar')); + $helper->addMimetype('rar', 'test/test'); + $this->assertEquals('test/test', $helper->getMimetypeFromExtension('rar')); + } +}