From 63b2bc136aa9b101b424cab89f31c772a9a4baea Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Tue, 8 Sep 2015 12:17:57 +0200 Subject: [PATCH] Move mimetype files into /resources/config/ --- lib/private/files/type/detection.php | 35 ++++++---- lib/private/server.php | 4 +- .../config}/mimetypealiases.dist.json | 2 +- .../config}/mimetypemapping.dist.json | 2 +- tests/lib/files/type/detection.php | 66 ++++++++++--------- 5 files changed, 62 insertions(+), 47 deletions(-) rename {config => resources/config}/mimetypealiases.dist.json (97%) rename {config => resources/config}/mimetypemapping.dist.json (99%) diff --git a/lib/private/files/type/detection.php b/lib/private/files/type/detection.php index 3dc3975fb2..0c647ab44c 100644 --- a/lib/private/files/type/detection.php +++ b/lib/private/files/type/detection.php @@ -49,15 +49,22 @@ class Detection implements IMimeTypeDetector { private $urlGenerator; /** @var string */ - private $configDir; + private $customConfigDir; + + /** @var string */ + private $defaultConfigDir; /** * @param IURLGenerator $urlGenerator - * @param string $configDir + * @param string $customConfigDir + * @param string $defaultConfigDir */ - public function __construct(IURLGenerator $urlGenerator, $configDir) { + public function __construct(IURLGenerator $urlGenerator, + $customConfigDir, + $defaultConfigDir) { $this->urlGenerator = $urlGenerator; - $this->configDir = $configDir; + $this->customConfigDir = $customConfigDir; + $this->defaultConfigDir = $defaultConfigDir; } /** @@ -71,7 +78,9 @@ class Detection implements IMimeTypeDetector { * @param string $mimetype * @param string|null $secureMimeType */ - public function registerType($extension, $mimetype, $secureMimeType = null) { + public function registerType($extension, + $mimetype, + $secureMimeType = null) { $this->mimetypes[$extension] = array($mimetype, $secureMimeType); $this->secureMimeTypes[$mimetype] = $secureMimeType ?: $mimetype; } @@ -102,10 +111,10 @@ class Detection implements IMimeTypeDetector { return; } - $this->mimeTypeAlias = json_decode(file_get_contents($this->configDir . '/mimetypealiases.dist.json'), true); + $this->mimeTypeAlias = json_decode(file_get_contents($this->defaultConfigDir . '/mimetypealiases.dist.json'), true); - if (file_exists($this->configDir . '/mimetypealiases.json')) { - $custom = json_decode(file_get_contents($this->configDir . '/mimetypealiases.json'), true); + if (file_exists($this->customConfigDir . '/mimetypealiases.json')) { + $custom = json_decode(file_get_contents($this->customConfigDir . '/mimetypealiases.json'), true); $this->mimeTypeAlias = array_merge($this->mimeTypeAlias, $custom); } } @@ -126,15 +135,15 @@ class Detection implements IMimeTypeDetector { return; } - $mimetypemapping = json_decode(file_get_contents($this->configDir . '/mimetypemapping.dist.json'), true); + $mimetypeMapping = json_decode(file_get_contents($this->defaultConfigDir . '/mimetypemapping.dist.json'), true); //Check if need to load custom mappings - if (file_exists($this->configDir . '/mimetypemapping.json')) { - $custom = json_decode(file_get_contents($this->configDir . '/mimetypemapping.json'), true); - $mimetypemapping = array_merge($mimetypemapping, $custom); + if (file_exists($this->customConfigDir . '/mimetypemapping.json')) { + $custom = json_decode(file_get_contents($this->customConfigDir . '/mimetypemapping.json'), true); + $mimetypeMapping = array_merge($mimetypeMapping, $custom); } - $this->registerTypeArray($mimetypemapping); + $this->registerTypeArray($mimetypeMapping); } /** diff --git a/lib/private/server.php b/lib/private/server.php index d5f4f532c1..9f99ead849 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -470,7 +470,9 @@ class Server extends SimpleContainer implements IServerContainer { $this->registerService('MimeTypeDetector', function(Server $c) { return new \OC\Files\Type\Detection( $c->getURLGenerator(), - \OC::$configDir); + \OC::$SERVERROOT . '/config/', + \OC::$SERVERROOT . '/resources/config/' + ); }); $this->registerService('MimeTypeLoader', function(Server $c) { return new \OC\Files\Type\Loader( diff --git a/config/mimetypealiases.dist.json b/resources/config/mimetypealiases.dist.json similarity index 97% rename from config/mimetypealiases.dist.json rename to resources/config/mimetypealiases.dist.json index 2c9bdaa00c..3d6c5edc13 100644 --- a/config/mimetypealiases.dist.json +++ b/resources/config/mimetypealiases.dist.json @@ -1,7 +1,7 @@ { "_comment" : "Array of mimetype aliases.", "_comment2": "Any changes you make here will be overwritten on an update of ownCloud.", - "_comment3": "Put any custom aliases in a new file mimetypealiases.json in this directory", + "_comment3": "Put any custom mappings in a new file mimetypealiases.json in the config/ folder of ownCloud", "_comment4": "After any change to mimetypealiases.json run:", "_comment5": "./occ maintenance:mimetypesjs", diff --git a/config/mimetypemapping.dist.json b/resources/config/mimetypemapping.dist.json similarity index 99% rename from config/mimetypemapping.dist.json rename to resources/config/mimetypemapping.dist.json index 48ec4a56da..79b0ca6524 100644 --- a/config/mimetypemapping.dist.json +++ b/resources/config/mimetypemapping.dist.json @@ -4,7 +4,7 @@ "_comment3": "and the second (if present] is a secure alternative", "_comment4": "Any changes you make here will be overwritten on an update of ownCloud", - "_comment5": "Put any custom mappings in a new file mimetypemapping.json in this directory", + "_comment5": "Put any custom mappings in a new file mimetypemapping.json in the config/ folder of ownCloud", "3gp": ["video/3gpp"], diff --git a/tests/lib/files/type/detection.php b/tests/lib/files/type/detection.php index 1997fa4dfd..5800f4eb8e 100644 --- a/tests/lib/files/type/detection.php +++ b/tests/lib/files/type/detection.php @@ -19,58 +19,64 @@ * */ -namespace OC\Files\Type; +namespace Test\Files\Type; use \OC\Files\Type\Detection; class DetectionTest extends \Test\TestCase { + /** @var Detection */ + private $detection; + + public function setUp() { + parent::setUp(); + $this->detection = new Detection( + \OC::$server->getURLGenerator(), + \OC::$SERVERROOT . '/config/', + \OC::$SERVERROOT . '/resources/config/' + ); + } public function testDetect() { - $detection = new Detection(\OC::$server->getURLGenerator(), \OC::$configDir); $dir = \OC::$SERVERROOT.'/tests/data'; - $result = $detection->detect($dir."/"); + $result = $this->detection->detect($dir."/"); $expected = 'httpd/unix-directory'; $this->assertEquals($expected, $result); - $result = $detection->detect($dir."/data.tar.gz"); + $result = $this->detection->detect($dir."/data.tar.gz"); $expected = 'application/x-gzip'; $this->assertEquals($expected, $result); - $result = $detection->detect($dir."/data.zip"); + $result = $this->detection->detect($dir."/data.zip"); $expected = 'application/zip'; $this->assertEquals($expected, $result); - $result = $detection->detect($dir."/testimagelarge.svg"); + $result = $this->detection->detect($dir."/testimagelarge.svg"); $expected = 'image/svg+xml'; $this->assertEquals($expected, $result); - $result = $detection->detect($dir."/testimage.png"); + $result = $this->detection->detect($dir."/testimage.png"); $expected = 'image/png'; $this->assertEquals($expected, $result); } public function testGetSecureMimeType() { - $detection = new Detection(\OC::$server->getURLGenerator(), \OC::$configDir); - - $result = $detection->getSecureMimeType('image/svg+xml'); + $result = $this->detection->getSecureMimeType('image/svg+xml'); $expected = 'text/plain'; $this->assertEquals($expected, $result); - $result = $detection->getSecureMimeType('image/png'); + $result = $this->detection->getSecureMimeType('image/png'); $expected = 'image/png'; $this->assertEquals($expected, $result); } public function testDetectPath() { - $detection = new Detection(\OC::$server->getURLGenerator(), \OC::$configDir); - - $this->assertEquals('text/plain', $detection->detectPath('foo.txt')); - $this->assertEquals('image/png', $detection->detectPath('foo.png')); - $this->assertEquals('image/png', $detection->detectPath('foo.bar.png')); - $this->assertEquals('application/octet-stream', $detection->detectPath('.png')); - $this->assertEquals('application/octet-stream', $detection->detectPath('foo')); - $this->assertEquals('application/octet-stream', $detection->detectPath('')); + $this->assertEquals('text/plain', $this->detection->detectPath('foo.txt')); + $this->assertEquals('image/png', $this->detection->detectPath('foo.png')); + $this->assertEquals('image/png', $this->detection->detectPath('foo.bar.png')); + $this->assertEquals('application/octet-stream', $this->detection->detectPath('.png')); + $this->assertEquals('application/octet-stream', $this->detection->detectPath('foo')); + $this->assertEquals('application/octet-stream', $this->detection->detectPath('')); } public function testDetectString() { @@ -78,16 +84,14 @@ class DetectionTest extends \Test\TestCase { $this->markTestSkipped('[Windows] Strings have mimetype application/octet-stream on Windows'); } - $detection = new Detection(\OC::$server->getURLGenerator(), \OC::$configDir); - - $result = $detection->detectString("/data/data.tar.gz"); + $result = $this->detection->detectString("/data/data.tar.gz"); $expected = 'text/plain; charset=us-ascii'; $this->assertEquals($expected, $result); } public function testMimeTypeIcon() { if (!class_exists('org\\bovigo\\vfs\\vfsStream')) { - $this->markTestSkipped('Pacakge vfsStream not installed'); + $this->markTestSkipped('Package vfsStream not installed'); } $confDir = \org\bovigo\vfs\vfsStream::setup(); $mimetypealiases_dist = \org\bovigo\vfs\vfsStream::newFile('mimetypealiases.dist.json')->at($confDir); @@ -111,7 +115,7 @@ class DetectionTest extends \Test\TestCase { ->with($this->equalTo('core'), $this->equalTo('filetypes/folder.png')) ->willReturn('folder.svg'); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('dir'); $this->assertEquals('folder.svg', $mimeType); @@ -130,7 +134,7 @@ class DetectionTest extends \Test\TestCase { ->with($this->equalTo('core'), $this->equalTo('filetypes/folder-shared.png')) ->willReturn('folder-shared.svg'); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('dir-shared'); $this->assertEquals('folder-shared.svg', $mimeType); @@ -150,7 +154,7 @@ class DetectionTest extends \Test\TestCase { ->with($this->equalTo('core'), $this->equalTo('filetypes/folder-external.png')) ->willReturn('folder-external.svg'); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('dir-external'); $this->assertEquals('folder-external.svg', $mimeType); @@ -170,7 +174,7 @@ class DetectionTest extends \Test\TestCase { ->with($this->equalTo('core'), $this->equalTo('filetypes/my-type.png')) ->willReturn('my-type.svg'); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('my-type'); $this->assertEquals('my-type.svg', $mimeType); @@ -200,7 +204,7 @@ class DetectionTest extends \Test\TestCase { } )); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('my-type'); $this->assertEquals('my.svg', $mimeType); @@ -231,7 +235,7 @@ class DetectionTest extends \Test\TestCase { } )); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('foo-bar'); $this->assertEquals('file.svg', $mimeType); @@ -250,7 +254,7 @@ class DetectionTest extends \Test\TestCase { ->with($this->equalTo('core'), $this->equalTo('filetypes/foo-bar.png')) ->willReturn('foo-bar.svg'); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('foo-bar'); $this->assertEquals('foo-bar.svg', $mimeType); $mimeType = $detection->mimeTypeIcon('foo-bar'); @@ -276,7 +280,7 @@ class DetectionTest extends \Test\TestCase { ->with($this->equalTo('core'), $this->equalTo('filetypes/foobar-baz.png')) ->willReturn('foobar-baz.svg'); - $detection = new Detection($urlGenerator, $confDir->url()); + $detection = new Detection($urlGenerator, $confDir->url(), $confDir->url()); $mimeType = $detection->mimeTypeIcon('foo'); $this->assertEquals('foobar-baz.svg', $mimeType); }