diff --git a/composer.json b/composer.json
index cf4964768..63c2b3666 100644
--- a/composer.json
+++ b/composer.json
@@ -25,7 +25,6 @@
"guzzlehttp/guzzle": "^7.2",
"icewind/searchdav": "^2.0.0",
"icewind/streams": "v0.7.5",
- "league/flysystem": "^1.0",
"microsoft/azure-storage-blob": "^1.5",
"nextcloud/lognormalizer": "^1.0",
"nikic/php-parser": "^4.2",
diff --git a/composer.lock b/composer.lock
index 64c1728f4..278f9d43b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "e04b133c884a19b7dee3ca4bec312477",
+ "content-hash": "01e379129272f47558fd9e7d6b69d731",
"packages": [
{
"name": "aws/aws-sdk-php",
@@ -1582,157 +1582,6 @@
},
"time": "2020-05-27T16:41:55+00:00"
},
- {
- "name": "league/flysystem",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem.git",
- "reference": "9be3b16c877d477357c015cec057548cf9b2a14a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a",
- "reference": "9be3b16c877d477357c015cec057548cf9b2a14a",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "league/mime-type-detection": "^1.3",
- "php": "^7.2.5 || ^8.0"
- },
- "conflict": {
- "league/flysystem-sftp": "<1.0.6"
- },
- "require-dev": {
- "phpspec/prophecy": "^1.11.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "suggest": {
- "ext-fileinfo": "Required for MimeType",
- "ext-ftp": "Allows you to use FTP server storage",
- "ext-openssl": "Allows you to use FTPS server storage",
- "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
- "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
- "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
- "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
- "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
- "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
- "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
- "league/flysystem-webdav": "Allows you to use WebDAV storage",
- "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
- "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
- "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "description": "Filesystem abstraction: Many filesystems, one API.",
- "keywords": [
- "Cloud Files",
- "WebDAV",
- "abstraction",
- "aws",
- "cloud",
- "copy.com",
- "dropbox",
- "file systems",
- "files",
- "filesystem",
- "filesystems",
- "ftp",
- "rackspace",
- "remote",
- "s3",
- "sftp",
- "storage"
- ],
- "support": {
- "issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/1.x"
- },
- "funding": [
- {
- "url": "https://offset.earth/frankdejonge",
- "type": "other"
- }
- ],
- "time": "2020-08-23T07:39:11+00:00"
- },
- {
- "name": "league/mime-type-detection",
- "version": "1.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.18",
- "phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\MimeTypeDetection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "description": "Mime-type detection for Flysystem",
- "support": {
- "issues": "https://github.com/thephpleague/mime-type-detection/issues",
- "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0"
- },
- "funding": [
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-18T20:58:21+00:00"
- },
{
"name": "league/uri",
"version": "6.4.0",
@@ -6020,5 +5869,5 @@
"platform-overrides": {
"php": "7.3.0"
},
- "plugin-api-version": "2.1.0"
+ "plugin-api-version": "2.0.0"
}
diff --git a/composer/autoload_classmap.php b/composer/autoload_classmap.php
index 7670fecba..aedcca40f 100644
--- a/composer/autoload_classmap.php
+++ b/composer/autoload_classmap.php
@@ -1530,62 +1530,6 @@
'JsonSchema\\Uri\\UriResolver' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php',
'JsonSchema\\Uri\\UriRetriever' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php',
'JsonSchema\\Validator' => $vendorDir . '/justinrainbow/json-schema/src/JsonSchema/Validator.php',
- 'League\\Flysystem\\AdapterInterface' => $vendorDir . '/league/flysystem/src/AdapterInterface.php',
- 'League\\Flysystem\\Adapter\\AbstractAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractAdapter.php',
- 'League\\Flysystem\\Adapter\\AbstractFtpAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractFtpAdapter.php',
- 'League\\Flysystem\\Adapter\\CanOverwriteFiles' => $vendorDir . '/league/flysystem/src/Adapter/CanOverwriteFiles.php',
- 'League\\Flysystem\\Adapter\\Ftp' => $vendorDir . '/league/flysystem/src/Adapter/Ftp.php',
- 'League\\Flysystem\\Adapter\\Ftpd' => $vendorDir . '/league/flysystem/src/Adapter/Ftpd.php',
- 'League\\Flysystem\\Adapter\\Local' => $vendorDir . '/league/flysystem/src/Adapter/Local.php',
- 'League\\Flysystem\\Adapter\\NullAdapter' => $vendorDir . '/league/flysystem/src/Adapter/NullAdapter.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\NotSupportingVisibilityTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedCopyTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedReadingTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedWritingTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php',
- 'League\\Flysystem\\Adapter\\SynologyFtp' => $vendorDir . '/league/flysystem/src/Adapter/SynologyFtp.php',
- 'League\\Flysystem\\Config' => $vendorDir . '/league/flysystem/src/Config.php',
- 'League\\Flysystem\\ConfigAwareTrait' => $vendorDir . '/league/flysystem/src/ConfigAwareTrait.php',
- 'League\\Flysystem\\ConnectionErrorException' => $vendorDir . '/league/flysystem/src/ConnectionErrorException.php',
- 'League\\Flysystem\\ConnectionRuntimeException' => $vendorDir . '/league/flysystem/src/ConnectionRuntimeException.php',
- 'League\\Flysystem\\Directory' => $vendorDir . '/league/flysystem/src/Directory.php',
- 'League\\Flysystem\\Exception' => $vendorDir . '/league/flysystem/src/Exception.php',
- 'League\\Flysystem\\File' => $vendorDir . '/league/flysystem/src/File.php',
- 'League\\Flysystem\\FileExistsException' => $vendorDir . '/league/flysystem/src/FileExistsException.php',
- 'League\\Flysystem\\FileNotFoundException' => $vendorDir . '/league/flysystem/src/FileNotFoundException.php',
- 'League\\Flysystem\\Filesystem' => $vendorDir . '/league/flysystem/src/Filesystem.php',
- 'League\\Flysystem\\FilesystemException' => $vendorDir . '/league/flysystem/src/FilesystemException.php',
- 'League\\Flysystem\\FilesystemInterface' => $vendorDir . '/league/flysystem/src/FilesystemInterface.php',
- 'League\\Flysystem\\FilesystemNotFoundException' => $vendorDir . '/league/flysystem/src/FilesystemNotFoundException.php',
- 'League\\Flysystem\\Handler' => $vendorDir . '/league/flysystem/src/Handler.php',
- 'League\\Flysystem\\InvalidRootException' => $vendorDir . '/league/flysystem/src/InvalidRootException.php',
- 'League\\Flysystem\\MountManager' => $vendorDir . '/league/flysystem/src/MountManager.php',
- 'League\\Flysystem\\NotSupportedException' => $vendorDir . '/league/flysystem/src/NotSupportedException.php',
- 'League\\Flysystem\\PluginInterface' => $vendorDir . '/league/flysystem/src/PluginInterface.php',
- 'League\\Flysystem\\Plugin\\AbstractPlugin' => $vendorDir . '/league/flysystem/src/Plugin/AbstractPlugin.php',
- 'League\\Flysystem\\Plugin\\EmptyDir' => $vendorDir . '/league/flysystem/src/Plugin/EmptyDir.php',
- 'League\\Flysystem\\Plugin\\ForcedCopy' => $vendorDir . '/league/flysystem/src/Plugin/ForcedCopy.php',
- 'League\\Flysystem\\Plugin\\ForcedRename' => $vendorDir . '/league/flysystem/src/Plugin/ForcedRename.php',
- 'League\\Flysystem\\Plugin\\GetWithMetadata' => $vendorDir . '/league/flysystem/src/Plugin/GetWithMetadata.php',
- 'League\\Flysystem\\Plugin\\ListFiles' => $vendorDir . '/league/flysystem/src/Plugin/ListFiles.php',
- 'League\\Flysystem\\Plugin\\ListPaths' => $vendorDir . '/league/flysystem/src/Plugin/ListPaths.php',
- 'League\\Flysystem\\Plugin\\ListWith' => $vendorDir . '/league/flysystem/src/Plugin/ListWith.php',
- 'League\\Flysystem\\Plugin\\PluggableTrait' => $vendorDir . '/league/flysystem/src/Plugin/PluggableTrait.php',
- 'League\\Flysystem\\Plugin\\PluginNotFoundException' => $vendorDir . '/league/flysystem/src/Plugin/PluginNotFoundException.php',
- 'League\\Flysystem\\ReadInterface' => $vendorDir . '/league/flysystem/src/ReadInterface.php',
- 'League\\Flysystem\\RootViolationException' => $vendorDir . '/league/flysystem/src/RootViolationException.php',
- 'League\\Flysystem\\SafeStorage' => $vendorDir . '/league/flysystem/src/SafeStorage.php',
- 'League\\Flysystem\\UnreadableFileException' => $vendorDir . '/league/flysystem/src/UnreadableFileException.php',
- 'League\\Flysystem\\Util' => $vendorDir . '/league/flysystem/src/Util.php',
- 'League\\Flysystem\\Util\\ContentListingFormatter' => $vendorDir . '/league/flysystem/src/Util/ContentListingFormatter.php',
- 'League\\Flysystem\\Util\\MimeType' => $vendorDir . '/league/flysystem/src/Util/MimeType.php',
- 'League\\Flysystem\\Util\\StreamHasher' => $vendorDir . '/league/flysystem/src/Util/StreamHasher.php',
- 'League\\MimeTypeDetection\\EmptyExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php',
- 'League\\MimeTypeDetection\\ExtensionMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/ExtensionMimeTypeDetector.php',
- 'League\\MimeTypeDetection\\ExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/ExtensionToMimeTypeMap.php',
- 'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php',
- 'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
- 'League\\MimeTypeDetection\\MimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/MimeTypeDetector.php',
'League\\Uri\\Contracts\\AuthorityInterface' => $vendorDir . '/league/uri-interfaces/src/Contracts/AuthorityInterface.php',
'League\\Uri\\Contracts\\DataPathInterface' => $vendorDir . '/league/uri-interfaces/src/Contracts/DataPathInterface.php',
'League\\Uri\\Contracts\\DomainHostInterface' => $vendorDir . '/league/uri-interfaces/src/Contracts/DomainHostInterface.php',
diff --git a/composer/autoload_psr4.php b/composer/autoload_psr4.php
index 8732a14ae..efbdec955 100644
--- a/composer/autoload_psr4.php
+++ b/composer/autoload_psr4.php
@@ -59,8 +59,6 @@
'MicrosoftAzure\\Storage\\Common\\' => array($vendorDir . '/microsoft/azure-storage-common/src/Common'),
'MicrosoftAzure\\Storage\\Blob\\' => array($vendorDir . '/microsoft/azure-storage-blob/src/Blob'),
'League\\Uri\\' => array($vendorDir . '/league/uri/src', $vendorDir . '/league/uri-interfaces/src'),
- 'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
- 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'),
'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'),
'Icewind\\Streams\\' => array($vendorDir . '/icewind/streams/src'),
diff --git a/composer/autoload_static.php b/composer/autoload_static.php
index 53b25bf85..abae7360f 100644
--- a/composer/autoload_static.php
+++ b/composer/autoload_static.php
@@ -217,8 +217,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652
'L' =>
array (
'League\\Uri\\' => 11,
- 'League\\MimeTypeDetection\\' => 25,
- 'League\\Flysystem\\' => 17,
),
'J' =>
array (
@@ -494,14 +492,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652
0 => __DIR__ . '/..' . '/league/uri/src',
1 => __DIR__ . '/..' . '/league/uri-interfaces/src',
),
- 'League\\MimeTypeDetection\\' =>
- array (
- 0 => __DIR__ . '/..' . '/league/mime-type-detection/src',
- ),
- 'League\\Flysystem\\' =>
- array (
- 0 => __DIR__ . '/..' . '/league/flysystem/src',
- ),
'JsonSchema\\' =>
array (
0 => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema',
@@ -2157,62 +2147,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652
'JsonSchema\\Uri\\UriResolver' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php',
'JsonSchema\\Uri\\UriRetriever' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php',
'JsonSchema\\Validator' => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema/Validator.php',
- 'League\\Flysystem\\AdapterInterface' => __DIR__ . '/..' . '/league/flysystem/src/AdapterInterface.php',
- 'League\\Flysystem\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractAdapter.php',
- 'League\\Flysystem\\Adapter\\AbstractFtpAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractFtpAdapter.php',
- 'League\\Flysystem\\Adapter\\CanOverwriteFiles' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/CanOverwriteFiles.php',
- 'League\\Flysystem\\Adapter\\Ftp' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Ftp.php',
- 'League\\Flysystem\\Adapter\\Ftpd' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Ftpd.php',
- 'League\\Flysystem\\Adapter\\Local' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Local.php',
- 'League\\Flysystem\\Adapter\\NullAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/NullAdapter.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\NotSupportingVisibilityTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedCopyTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedReadingTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php',
- 'League\\Flysystem\\Adapter\\Polyfill\\StreamedWritingTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php',
- 'League\\Flysystem\\Adapter\\SynologyFtp' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/SynologyFtp.php',
- 'League\\Flysystem\\Config' => __DIR__ . '/..' . '/league/flysystem/src/Config.php',
- 'League\\Flysystem\\ConfigAwareTrait' => __DIR__ . '/..' . '/league/flysystem/src/ConfigAwareTrait.php',
- 'League\\Flysystem\\ConnectionErrorException' => __DIR__ . '/..' . '/league/flysystem/src/ConnectionErrorException.php',
- 'League\\Flysystem\\ConnectionRuntimeException' => __DIR__ . '/..' . '/league/flysystem/src/ConnectionRuntimeException.php',
- 'League\\Flysystem\\Directory' => __DIR__ . '/..' . '/league/flysystem/src/Directory.php',
- 'League\\Flysystem\\Exception' => __DIR__ . '/..' . '/league/flysystem/src/Exception.php',
- 'League\\Flysystem\\File' => __DIR__ . '/..' . '/league/flysystem/src/File.php',
- 'League\\Flysystem\\FileExistsException' => __DIR__ . '/..' . '/league/flysystem/src/FileExistsException.php',
- 'League\\Flysystem\\FileNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/FileNotFoundException.php',
- 'League\\Flysystem\\Filesystem' => __DIR__ . '/..' . '/league/flysystem/src/Filesystem.php',
- 'League\\Flysystem\\FilesystemException' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemException.php',
- 'League\\Flysystem\\FilesystemInterface' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemInterface.php',
- 'League\\Flysystem\\FilesystemNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemNotFoundException.php',
- 'League\\Flysystem\\Handler' => __DIR__ . '/..' . '/league/flysystem/src/Handler.php',
- 'League\\Flysystem\\InvalidRootException' => __DIR__ . '/..' . '/league/flysystem/src/InvalidRootException.php',
- 'League\\Flysystem\\MountManager' => __DIR__ . '/..' . '/league/flysystem/src/MountManager.php',
- 'League\\Flysystem\\NotSupportedException' => __DIR__ . '/..' . '/league/flysystem/src/NotSupportedException.php',
- 'League\\Flysystem\\PluginInterface' => __DIR__ . '/..' . '/league/flysystem/src/PluginInterface.php',
- 'League\\Flysystem\\Plugin\\AbstractPlugin' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/AbstractPlugin.php',
- 'League\\Flysystem\\Plugin\\EmptyDir' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/EmptyDir.php',
- 'League\\Flysystem\\Plugin\\ForcedCopy' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ForcedCopy.php',
- 'League\\Flysystem\\Plugin\\ForcedRename' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ForcedRename.php',
- 'League\\Flysystem\\Plugin\\GetWithMetadata' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/GetWithMetadata.php',
- 'League\\Flysystem\\Plugin\\ListFiles' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListFiles.php',
- 'League\\Flysystem\\Plugin\\ListPaths' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListPaths.php',
- 'League\\Flysystem\\Plugin\\ListWith' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListWith.php',
- 'League\\Flysystem\\Plugin\\PluggableTrait' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/PluggableTrait.php',
- 'League\\Flysystem\\Plugin\\PluginNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/PluginNotFoundException.php',
- 'League\\Flysystem\\ReadInterface' => __DIR__ . '/..' . '/league/flysystem/src/ReadInterface.php',
- 'League\\Flysystem\\RootViolationException' => __DIR__ . '/..' . '/league/flysystem/src/RootViolationException.php',
- 'League\\Flysystem\\SafeStorage' => __DIR__ . '/..' . '/league/flysystem/src/SafeStorage.php',
- 'League\\Flysystem\\UnreadableFileException' => __DIR__ . '/..' . '/league/flysystem/src/UnreadableFileException.php',
- 'League\\Flysystem\\Util' => __DIR__ . '/..' . '/league/flysystem/src/Util.php',
- 'League\\Flysystem\\Util\\ContentListingFormatter' => __DIR__ . '/..' . '/league/flysystem/src/Util/ContentListingFormatter.php',
- 'League\\Flysystem\\Util\\MimeType' => __DIR__ . '/..' . '/league/flysystem/src/Util/MimeType.php',
- 'League\\Flysystem\\Util\\StreamHasher' => __DIR__ . '/..' . '/league/flysystem/src/Util/StreamHasher.php',
- 'League\\MimeTypeDetection\\EmptyExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php',
- 'League\\MimeTypeDetection\\ExtensionMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionMimeTypeDetector.php',
- 'League\\MimeTypeDetection\\ExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionToMimeTypeMap.php',
- 'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php',
- 'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
- 'League\\MimeTypeDetection\\MimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/MimeTypeDetector.php',
'League\\Uri\\Contracts\\AuthorityInterface' => __DIR__ . '/..' . '/league/uri-interfaces/src/Contracts/AuthorityInterface.php',
'League\\Uri\\Contracts\\DataPathInterface' => __DIR__ . '/..' . '/league/uri-interfaces/src/Contracts/DataPathInterface.php',
'League\\Uri\\Contracts\\DomainHostInterface' => __DIR__ . '/..' . '/league/uri-interfaces/src/Contracts/DomainHostInterface.php',
diff --git a/composer/installed.json b/composer/installed.json
index c1f499f7f..c6d2ef0db 100644
--- a/composer/installed.json
+++ b/composer/installed.json
@@ -1641,163 +1641,6 @@
},
"install-path": "../justinrainbow/json-schema"
},
- {
- "name": "league/flysystem",
- "version": "1.1.3",
- "version_normalized": "1.1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem.git",
- "reference": "9be3b16c877d477357c015cec057548cf9b2a14a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a",
- "reference": "9be3b16c877d477357c015cec057548cf9b2a14a",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "league/mime-type-detection": "^1.3",
- "php": "^7.2.5 || ^8.0"
- },
- "conflict": {
- "league/flysystem-sftp": "<1.0.6"
- },
- "require-dev": {
- "phpspec/prophecy": "^1.11.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "suggest": {
- "ext-fileinfo": "Required for MimeType",
- "ext-ftp": "Allows you to use FTP server storage",
- "ext-openssl": "Allows you to use FTPS server storage",
- "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
- "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
- "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
- "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
- "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
- "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
- "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
- "league/flysystem-webdav": "Allows you to use WebDAV storage",
- "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
- "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
- "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
- },
- "time": "2020-08-23T07:39:11+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "description": "Filesystem abstraction: Many filesystems, one API.",
- "keywords": [
- "Cloud Files",
- "WebDAV",
- "abstraction",
- "aws",
- "cloud",
- "copy.com",
- "dropbox",
- "file systems",
- "files",
- "filesystem",
- "filesystems",
- "ftp",
- "rackspace",
- "remote",
- "s3",
- "sftp",
- "storage"
- ],
- "support": {
- "issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/1.x"
- },
- "funding": [
- {
- "url": "https://offset.earth/frankdejonge",
- "type": "other"
- }
- ],
- "install-path": "../league/flysystem"
- },
- {
- "name": "league/mime-type-detection",
- "version": "1.7.0",
- "version_normalized": "1.7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.18",
- "phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3"
- },
- "time": "2021-01-18T20:58:21+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "League\\MimeTypeDetection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "description": "Mime-type detection for Flysystem",
- "support": {
- "issues": "https://github.com/thephpleague/mime-type-detection/issues",
- "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0"
- },
- "funding": [
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
- }
- ],
- "install-path": "../league/mime-type-detection"
- },
{
"name": "league/uri",
"version": "6.4.0",
@@ -6255,6 +6098,6 @@
"install-path": "../web-auth/webauthn-lib"
}
],
- "dev": true,
+ "dev": false,
"dev-package-names": []
}
diff --git a/composer/installed.php b/composer/installed.php
index 22318c991..0c4c3c249 100644
--- a/composer/installed.php
+++ b/composer/installed.php
@@ -5,9 +5,9 @@
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
- 'reference' => '92f18e31c4e877ee7f7088f7e10977ac3d67e9e2',
+ 'reference' => 'd1bf85a7c711a101a13f65443216d76426e804fc',
'name' => 'nextcloud/3rdparty',
- 'dev' => true,
+ 'dev' => false,
),
'versions' => array(
'aws/aws-sdk-php' => array(
@@ -217,24 +217,6 @@
'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b',
'dev_requirement' => false,
),
- 'league/flysystem' => array(
- 'pretty_version' => '1.1.3',
- 'version' => '1.1.3.0',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../league/flysystem',
- 'aliases' => array(),
- 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a',
- 'dev_requirement' => false,
- ),
- 'league/mime-type-detection' => array(
- 'pretty_version' => '1.7.0',
- 'version' => '1.7.0.0',
- 'type' => 'library',
- 'install_path' => __DIR__ . '/../league/mime-type-detection',
- 'aliases' => array(),
- 'reference' => '3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3',
- 'dev_requirement' => false,
- ),
'league/uri' => array(
'pretty_version' => '6.4.0',
'version' => '6.4.0.0',
@@ -286,7 +268,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
- 'reference' => '92f18e31c4e877ee7f7088f7e10977ac3d67e9e2',
+ 'reference' => 'd1bf85a7c711a101a13f65443216d76426e804fc',
'dev_requirement' => false,
),
'nextcloud/lognormalizer' => array(
diff --git a/composer/package-versions-deprecated/src/PackageVersions/Versions.php b/composer/package-versions-deprecated/src/PackageVersions/Versions.php
index 276cf6dcf..5cea451f5 100644
--- a/composer/package-versions-deprecated/src/PackageVersions/Versions.php
+++ b/composer/package-versions-deprecated/src/PackageVersions/Versions.php
@@ -56,8 +56,6 @@ final class Versions
'icewind/searchdav' => 'v2.0.0@c69806d900c2c9a5954bfabc80178d6eb0d63df4',
'icewind/streams' => 'v0.7.5@0c6aae16ebdadb257f0bd089c1e1e4cf5e20ddc2',
'justinrainbow/json-schema' => '5.2.10@2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b',
- 'league/flysystem' => '1.1.3@9be3b16c877d477357c015cec057548cf9b2a14a',
- 'league/mime-type-detection' => '1.7.0@3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3',
'league/uri' => '6.4.0@09da64118eaf4c5d52f9923a1e6a5be1da52fd9a',
'league/uri-interfaces' => '2.2.0@667f150e589d65d79c89ffe662e426704f84224f',
'microsoft/azure-storage-blob' => '1.5.2@2475330963372d519387cb8135d6a9cfd42272da',
@@ -119,7 +117,7 @@ final class Versions
'web-auth/cose-lib' => 'v3.3.9@ed172d2dc1a6b87b5c644c07c118cd30c1b3819b',
'web-auth/metadata-service' => 'v3.3.9@8488d3a832a38cc81c670fce05de1e515c6e64b1',
'web-auth/webauthn-lib' => 'v3.3.9@04b98ee3d39cb79dad68a7c15c297c085bf66bfe',
- 'nextcloud/3rdparty' => 'dev-master@92f18e31c4e877ee7f7088f7e10977ac3d67e9e2',
+ 'nextcloud/3rdparty' => 'dev-master@d1bf85a7c711a101a13f65443216d76426e804fc',
);
private function __construct()
diff --git a/league/flysystem/LICENSE b/league/flysystem/LICENSE
deleted file mode 100644
index f2684c841..000000000
--- a/league/flysystem/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2013-2019 Frank de Jonge
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/league/flysystem/composer.json b/league/flysystem/composer.json
deleted file mode 100644
index bd7434a87..000000000
--- a/league/flysystem/composer.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "league/flysystem",
- "type": "library",
- "description": "Filesystem abstraction: Many filesystems, one API.",
- "keywords": [
- "filesystem", "filesystems", "files", "storage", "dropbox", "aws",
- "abstraction", "s3", "ftp", "sftp", "remote", "webdav",
- "file systems", "cloud", "cloud files", "rackspace", "copy.com"
- ],
- "funding": [
- {
- "type": "other",
- "url": "https://offset.earth/frankdejonge"
- }
- ],
- "license": "MIT",
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "require": {
- "php": "^7.2.5 || ^8.0",
- "ext-fileinfo": "*",
- "league/mime-type-detection": "^1.3"
- },
- "require-dev": {
- "phpspec/prophecy": "^1.11.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\": "src/"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "League\\Flysystem\\Stub\\": "stub/"
- }
- },
- "suggest": {
- "ext-fileinfo": "Required for MimeType",
- "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
- "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
- "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
- "league/flysystem-webdav": "Allows you to use WebDAV storage",
- "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
- "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
- "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
- "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications",
- "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
- "ext-ftp": "Allows you to use FTP server storage",
- "ext-openssl": "Allows you to use FTPS server storage",
- "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
- "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter"
- },
- "conflict": {
- "league/flysystem-sftp": "<1.0.6"
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "scripts": {
- "phpstan": "php phpstan.php"
- }
-}
diff --git a/league/flysystem/src/Adapter/AbstractAdapter.php b/league/flysystem/src/Adapter/AbstractAdapter.php
deleted file mode 100644
index e577ac4a7..000000000
--- a/league/flysystem/src/Adapter/AbstractAdapter.php
+++ /dev/null
@@ -1,72 +0,0 @@
-pathPrefix = null;
-
- return;
- }
-
- $this->pathPrefix = rtrim($prefix, '\\/') . $this->pathSeparator;
- }
-
- /**
- * Get the path prefix.
- *
- * @return string|null path prefix or null if pathPrefix is empty
- */
- public function getPathPrefix()
- {
- return $this->pathPrefix;
- }
-
- /**
- * Prefix a path.
- *
- * @param string $path
- *
- * @return string prefixed path
- */
- public function applyPathPrefix($path)
- {
- return $this->getPathPrefix() . ltrim($path, '\\/');
- }
-
- /**
- * Remove a path prefix.
- *
- * @param string $path
- *
- * @return string path without the prefix
- */
- public function removePathPrefix($path)
- {
- return substr($path, strlen($this->getPathPrefix()));
- }
-}
diff --git a/league/flysystem/src/Adapter/AbstractFtpAdapter.php b/league/flysystem/src/Adapter/AbstractFtpAdapter.php
deleted file mode 100644
index b232cdc4b..000000000
--- a/league/flysystem/src/Adapter/AbstractFtpAdapter.php
+++ /dev/null
@@ -1,705 +0,0 @@
-safeStorage = new SafeStorage();
- $this->setConfig($config);
- }
-
- /**
- * Set the config.
- *
- * @param array $config
- *
- * @return $this
- */
- public function setConfig(array $config)
- {
- foreach ($this->configurable as $setting) {
- if ( ! isset($config[$setting])) {
- continue;
- }
-
- $method = 'set' . ucfirst($setting);
-
- if (method_exists($this, $method)) {
- $this->$method($config[$setting]);
- }
- }
-
- return $this;
- }
-
- /**
- * Returns the host.
- *
- * @return string
- */
- public function getHost()
- {
- return $this->host;
- }
-
- /**
- * Set the host.
- *
- * @param string $host
- *
- * @return $this
- */
- public function setHost($host)
- {
- $this->host = $host;
-
- return $this;
- }
-
- /**
- * Set the public permission value.
- *
- * @param int $permPublic
- *
- * @return $this
- */
- public function setPermPublic($permPublic)
- {
- $this->permPublic = $permPublic;
-
- return $this;
- }
-
- /**
- * Set the private permission value.
- *
- * @param int $permPrivate
- *
- * @return $this
- */
- public function setPermPrivate($permPrivate)
- {
- $this->permPrivate = $permPrivate;
-
- return $this;
- }
-
- /**
- * Returns the ftp port.
- *
- * @return int
- */
- public function getPort()
- {
- return $this->port;
- }
-
- /**
- * Returns the root folder to work from.
- *
- * @return string
- */
- public function getRoot()
- {
- return $this->root;
- }
-
- /**
- * Set the ftp port.
- *
- * @param int|string $port
- *
- * @return $this
- */
- public function setPort($port)
- {
- $this->port = (int) $port;
-
- return $this;
- }
-
- /**
- * Set the root folder to work from.
- *
- * @param string $root
- *
- * @return $this
- */
- public function setRoot($root)
- {
- $this->root = rtrim($root, '\\/') . $this->separator;
-
- return $this;
- }
-
- /**
- * Returns the ftp username.
- *
- * @return string username
- */
- public function getUsername()
- {
- $username = $this->safeStorage->retrieveSafely('username');
-
- return $username !== null ? $username : 'anonymous';
- }
-
- /**
- * Set ftp username.
- *
- * @param string $username
- *
- * @return $this
- */
- public function setUsername($username)
- {
- $this->safeStorage->storeSafely('username', $username);
-
- return $this;
- }
-
- /**
- * Returns the password.
- *
- * @return string password
- */
- public function getPassword()
- {
- return $this->safeStorage->retrieveSafely('password');
- }
-
- /**
- * Set the ftp password.
- *
- * @param string $password
- *
- * @return $this
- */
- public function setPassword($password)
- {
- $this->safeStorage->storeSafely('password', $password);
-
- return $this;
- }
-
- /**
- * Returns the amount of seconds before the connection will timeout.
- *
- * @return int
- */
- public function getTimeout()
- {
- return $this->timeout;
- }
-
- /**
- * Set the amount of seconds before the connection should timeout.
- *
- * @param int $timeout
- *
- * @return $this
- */
- public function setTimeout($timeout)
- {
- $this->timeout = (int) $timeout;
-
- return $this;
- }
-
- /**
- * Return the FTP system type.
- *
- * @return string
- */
- public function getSystemType()
- {
- return $this->systemType;
- }
-
- /**
- * Set the FTP system type (windows or unix).
- *
- * @param string $systemType
- *
- * @return $this
- */
- public function setSystemType($systemType)
- {
- $this->systemType = strtolower($systemType);
-
- return $this;
- }
-
- /**
- * True to enable timestamps for FTP servers that return unix-style listings.
- *
- * @param bool $bool
- *
- * @return $this
- */
- public function setEnableTimestampsOnUnixListings($bool = false)
- {
- $this->enableTimestampsOnUnixListings = $bool;
-
- return $this;
- }
-
- /**
- * @inheritdoc
- */
- public function listContents($directory = '', $recursive = false)
- {
- return $this->listDirectoryContents($directory, $recursive);
- }
-
- abstract protected function listDirectoryContents($directory, $recursive = false);
-
- /**
- * Normalize a directory listing.
- *
- * @param array $listing
- * @param string $prefix
- *
- * @return array directory listing
- */
- protected function normalizeListing(array $listing, $prefix = '')
- {
- $base = $prefix;
- $result = [];
- $listing = $this->removeDotDirectories($listing);
-
- while ($item = array_shift($listing)) {
- if (preg_match('#^.*:$#', $item)) {
- $base = preg_replace('~^\./*|:$~', '', $item);
- continue;
- }
-
- $result[] = $this->normalizeObject($item, $base);
- }
-
- return $this->sortListing($result);
- }
-
- /**
- * Sort a directory listing.
- *
- * @param array $result
- *
- * @return array sorted listing
- */
- protected function sortListing(array $result)
- {
- $compare = function ($one, $two) {
- return strnatcmp($one['path'], $two['path']);
- };
-
- usort($result, $compare);
-
- return $result;
- }
-
- /**
- * Normalize a file entry.
- *
- * @param string $item
- * @param string $base
- *
- * @return array normalized file array
- *
- * @throws NotSupportedException
- */
- protected function normalizeObject($item, $base)
- {
- $systemType = $this->systemType ?: $this->detectSystemType($item);
-
- if ($systemType === 'unix') {
- return $this->normalizeUnixObject($item, $base);
- } elseif ($systemType === 'windows') {
- return $this->normalizeWindowsObject($item, $base);
- }
-
- throw NotSupportedException::forFtpSystemType($systemType);
- }
-
- /**
- * Normalize a Unix file entry.
- *
- * Given $item contains:
- * '-rw-r--r-- 1 ftp ftp 409 Aug 19 09:01 file1.txt'
- *
- * This function will return:
- * [
- * 'type' => 'file',
- * 'path' => 'file1.txt',
- * 'visibility' => 'public',
- * 'size' => 409,
- * 'timestamp' => 1566205260
- * ]
- *
- * @param string $item
- * @param string $base
- *
- * @return array normalized file array
- */
- protected function normalizeUnixObject($item, $base)
- {
- $item = preg_replace('#\s+#', ' ', trim($item), 7);
-
- if (count(explode(' ', $item, 9)) !== 9) {
- throw new RuntimeException("Metadata can't be parsed from item '$item' , not enough parts.");
- }
-
- list($permissions, /* $number */, /* $owner */, /* $group */, $size, $month, $day, $timeOrYear, $name) = explode(' ', $item, 9);
- $type = $this->detectType($permissions);
- $path = $base === '' ? $name : $base . $this->separator . $name;
-
- if ($type === 'dir') {
- $result = compact('type', 'path');
- if ($this->enableTimestampsOnUnixListings) {
- $timestamp = $this->normalizeUnixTimestamp($month, $day, $timeOrYear);
- $result += compact('timestamp');
- }
-
- return $result;
- }
-
- $permissions = $this->normalizePermissions($permissions);
- $visibility = $permissions & 0044 ? AdapterInterface::VISIBILITY_PUBLIC : AdapterInterface::VISIBILITY_PRIVATE;
- $size = (int) $size;
-
- $result = compact('type', 'path', 'visibility', 'size');
- if ($this->enableTimestampsOnUnixListings) {
- $timestamp = $this->normalizeUnixTimestamp($month, $day, $timeOrYear);
- $result += compact('timestamp');
- }
-
- return $result;
- }
-
- /**
- * Only accurate to the minute (current year), or to the day.
- *
- * Inadequacies in timestamp accuracy are due to limitations of the FTP 'LIST' command
- *
- * Note: The 'MLSD' command is a machine-readable replacement for 'LIST'
- * but many FTP servers do not support it :(
- *
- * @param string $month e.g. 'Aug'
- * @param string $day e.g. '19'
- * @param string $timeOrYear e.g. '09:01' OR '2015'
- *
- * @return int
- */
- protected function normalizeUnixTimestamp($month, $day, $timeOrYear)
- {
- if (is_numeric($timeOrYear)) {
- $year = $timeOrYear;
- $hour = '00';
- $minute = '00';
- $seconds = '00';
- } else {
- $year = date('Y');
- list($hour, $minute) = explode(':', $timeOrYear);
- $seconds = '00';
- }
- $dateTime = DateTime::createFromFormat('Y-M-j-G:i:s', "{$year}-{$month}-{$day}-{$hour}:{$minute}:{$seconds}");
-
- return $dateTime->getTimestamp();
- }
-
- /**
- * Normalize a Windows/DOS file entry.
- *
- * @param string $item
- * @param string $base
- *
- * @return array normalized file array
- */
- protected function normalizeWindowsObject($item, $base)
- {
- $item = preg_replace('#\s+#', ' ', trim($item), 3);
-
- if (count(explode(' ', $item, 4)) !== 4) {
- throw new RuntimeException("Metadata can't be parsed from item '$item' , not enough parts.");
- }
-
- list($date, $time, $size, $name) = explode(' ', $item, 4);
- $path = $base === '' ? $name : $base . $this->separator . $name;
-
- // Check for the correct date/time format
- $format = strlen($date) === 8 ? 'm-d-yH:iA' : 'Y-m-dH:i';
- $dt = DateTime::createFromFormat($format, $date . $time);
- $timestamp = $dt ? $dt->getTimestamp() : (int) strtotime("$date $time");
-
- if ($size === '
') {
- $type = 'dir';
-
- return compact('type', 'path', 'timestamp');
- }
-
- $type = 'file';
- $visibility = AdapterInterface::VISIBILITY_PUBLIC;
- $size = (int) $size;
-
- return compact('type', 'path', 'visibility', 'size', 'timestamp');
- }
-
- /**
- * Get the system type from a listing item.
- *
- * @param string $item
- *
- * @return string the system type
- */
- protected function detectSystemType($item)
- {
- return preg_match('/^[0-9]{2,4}-[0-9]{2}-[0-9]{2}/', $item) ? 'windows' : 'unix';
- }
-
- /**
- * Get the file type from the permissions.
- *
- * @param string $permissions
- *
- * @return string file type
- */
- protected function detectType($permissions)
- {
- return substr($permissions, 0, 1) === 'd' ? 'dir' : 'file';
- }
-
- /**
- * Normalize a permissions string.
- *
- * @param string $permissions
- *
- * @return int
- */
- protected function normalizePermissions($permissions)
- {
- if (is_numeric($permissions)) {
- return ((int) $permissions) & 0777;
- }
-
- // remove the type identifier
- $permissions = substr($permissions, 1);
-
- // map the string rights to the numeric counterparts
- $map = ['-' => '0', 'r' => '4', 'w' => '2', 'x' => '1'];
- $permissions = strtr($permissions, $map);
-
- // split up the permission groups
- $parts = str_split($permissions, 3);
-
- // convert the groups
- $mapper = function ($part) {
- return array_sum(str_split($part));
- };
-
- // converts to decimal number
- return octdec(implode('', array_map($mapper, $parts)));
- }
-
- /**
- * Filter out dot-directories.
- *
- * @param array $list
- *
- * @return array
- */
- public function removeDotDirectories(array $list)
- {
- $filter = function ($line) {
- return $line !== '' && ! preg_match('#.* \.(\.)?$|^total#', $line);
- };
-
- return array_filter($list, $filter);
- }
-
- /**
- * @inheritdoc
- */
- public function has($path)
- {
- return $this->getMetadata($path);
- }
-
- /**
- * @inheritdoc
- */
- public function getSize($path)
- {
- return $this->getMetadata($path);
- }
-
- /**
- * @inheritdoc
- */
- public function getVisibility($path)
- {
- return $this->getMetadata($path);
- }
-
- /**
- * Ensure a directory exists.
- *
- * @param string $dirname
- */
- public function ensureDirectory($dirname)
- {
- $dirname = (string) $dirname;
-
- if ($dirname !== '' && ! $this->has($dirname)) {
- $this->createDir($dirname, new Config());
- }
- }
-
- /**
- * @return mixed
- */
- public function getConnection()
- {
- if ( ! $this->isConnected()) {
- $this->disconnect();
- $this->connect();
- }
-
- return $this->connection;
- }
-
- /**
- * Get the public permission value.
- *
- * @return int
- */
- public function getPermPublic()
- {
- return $this->permPublic;
- }
-
- /**
- * Get the private permission value.
- *
- * @return int
- */
- public function getPermPrivate()
- {
- return $this->permPrivate;
- }
-
- /**
- * Disconnect on destruction.
- */
- public function __destruct()
- {
- $this->disconnect();
- }
-
- /**
- * Establish a connection.
- */
- abstract public function connect();
-
- /**
- * Close the connection.
- */
- abstract public function disconnect();
-
- /**
- * Check if a connection is active.
- *
- * @return bool
- */
- abstract public function isConnected();
-
- protected function escapePath($path)
- {
- return str_replace(['*', '[', ']'], ['\\*', '\\[', '\\]'], $path);
- }
-}
diff --git a/league/flysystem/src/Adapter/CanOverwriteFiles.php b/league/flysystem/src/Adapter/CanOverwriteFiles.php
deleted file mode 100644
index fd8d2161e..000000000
--- a/league/flysystem/src/Adapter/CanOverwriteFiles.php
+++ /dev/null
@@ -1,12 +0,0 @@
-transferMode = $mode;
-
- return $this;
- }
-
- /**
- * Set if Ssl is enabled.
- *
- * @param bool $ssl
- *
- * @return $this
- */
- public function setSsl($ssl)
- {
- $this->ssl = (bool) $ssl;
-
- return $this;
- }
-
- /**
- * Set if passive mode should be used.
- *
- * @param bool $passive
- */
- public function setPassive($passive = true)
- {
- $this->passive = $passive;
- }
-
- /**
- * @param bool $ignorePassiveAddress
- */
- public function setIgnorePassiveAddress($ignorePassiveAddress)
- {
- $this->ignorePassiveAddress = $ignorePassiveAddress;
- }
-
- /**
- * @param bool $recurseManually
- */
- public function setRecurseManually($recurseManually)
- {
- $this->recurseManually = $recurseManually;
- }
-
- /**
- * @param bool $utf8
- */
- public function setUtf8($utf8)
- {
- $this->utf8 = (bool) $utf8;
- }
-
- /**
- * Connect to the FTP server.
- */
- public function connect()
- {
- $tries = 3;
- start_connecting:
-
- if ($this->ssl) {
- $this->connection = @ftp_ssl_connect($this->getHost(), $this->getPort(), $this->getTimeout());
- } else {
- $this->connection = @ftp_connect($this->getHost(), $this->getPort(), $this->getTimeout());
- }
-
- if ( ! $this->connection) {
- $tries--;
-
- if ($tries > 0) goto start_connecting;
-
- throw new ConnectionRuntimeException('Could not connect to host: ' . $this->getHost() . ', port:' . $this->getPort());
- }
-
- $this->login();
- $this->setUtf8Mode();
- $this->setConnectionPassiveMode();
- $this->setConnectionRoot();
- $this->isPureFtpd = $this->isPureFtpdServer();
- }
-
- /**
- * Set the connection to UTF-8 mode.
- */
- protected function setUtf8Mode()
- {
- if ($this->utf8) {
- $response = ftp_raw($this->connection, "OPTS UTF8 ON");
- if (substr($response[0], 0, 3) !== '200') {
- throw new ConnectionRuntimeException(
- 'Could not set UTF-8 mode for connection: ' . $this->getHost() . '::' . $this->getPort()
- );
- }
- }
- }
-
- /**
- * Set the connections to passive mode.
- *
- * @throws ConnectionRuntimeException
- */
- protected function setConnectionPassiveMode()
- {
- if (is_bool($this->ignorePassiveAddress) && defined('FTP_USEPASVADDRESS')) {
- ftp_set_option($this->connection, FTP_USEPASVADDRESS, ! $this->ignorePassiveAddress);
- }
-
- if ( ! ftp_pasv($this->connection, $this->passive)) {
- throw new ConnectionRuntimeException(
- 'Could not set passive mode for connection: ' . $this->getHost() . '::' . $this->getPort()
- );
- }
- }
-
- /**
- * Set the connection root.
- */
- protected function setConnectionRoot()
- {
- $root = $this->getRoot();
- $connection = $this->connection;
-
- if ($root && ! ftp_chdir($connection, $root)) {
- throw new InvalidRootException('Root is invalid or does not exist: ' . $this->getRoot());
- }
-
- // Store absolute path for further reference.
- // This is needed when creating directories and
- // initial root was a relative path, else the root
- // would be relative to the chdir'd path.
- $this->root = ftp_pwd($connection);
- }
-
- /**
- * Login.
- *
- * @throws ConnectionRuntimeException
- */
- protected function login()
- {
- set_error_handler(function () {
- });
- $isLoggedIn = ftp_login(
- $this->connection,
- $this->getUsername(),
- $this->getPassword()
- );
- restore_error_handler();
-
- if ( ! $isLoggedIn) {
- $this->disconnect();
- throw new ConnectionRuntimeException(
- 'Could not login with connection: ' . $this->getHost() . '::' . $this->getPort(
- ) . ', username: ' . $this->getUsername()
- );
- }
- }
-
- /**
- * Disconnect from the FTP server.
- */
- public function disconnect()
- {
- if (is_resource($this->connection)) {
- @ftp_close($this->connection);
- }
-
- $this->connection = null;
- }
-
- /**
- * @inheritdoc
- */
- public function write($path, $contents, Config $config)
- {
- $stream = fopen('php://temp', 'w+b');
- fwrite($stream, $contents);
- rewind($stream);
- $result = $this->writeStream($path, $stream, $config);
- fclose($stream);
-
- if ($result === false) {
- return false;
- }
-
- $result['contents'] = $contents;
- $result['mimetype'] = $config->get('mimetype') ?: Util::guessMimeType($path, $contents);
-
- return $result;
- }
-
- /**
- * @inheritdoc
- */
- public function writeStream($path, $resource, Config $config)
- {
- $this->ensureDirectory(Util::dirname($path));
-
- if ( ! ftp_fput($this->getConnection(), $path, $resource, $this->transferMode)) {
- return false;
- }
-
- if ($visibility = $config->get('visibility')) {
- $this->setVisibility($path, $visibility);
- }
-
- $type = 'file';
-
- return compact('type', 'path', 'visibility');
- }
-
- /**
- * @inheritdoc
- */
- public function update($path, $contents, Config $config)
- {
- return $this->write($path, $contents, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function updateStream($path, $resource, Config $config)
- {
- return $this->writeStream($path, $resource, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function rename($path, $newpath)
- {
- return ftp_rename($this->getConnection(), $path, $newpath);
- }
-
- /**
- * @inheritdoc
- */
- public function delete($path)
- {
- return ftp_delete($this->getConnection(), $path);
- }
-
- /**
- * @inheritdoc
- */
- public function deleteDir($dirname)
- {
- $connection = $this->getConnection();
- $contents = array_reverse($this->listDirectoryContents($dirname, false));
-
- foreach ($contents as $object) {
- if ($object['type'] === 'file') {
- if ( ! ftp_delete($connection, $object['path'])) {
- return false;
- }
- } elseif ( ! $this->deleteDir($object['path'])) {
- return false;
- }
- }
-
- return ftp_rmdir($connection, $dirname);
- }
-
- /**
- * @inheritdoc
- */
- public function createDir($dirname, Config $config)
- {
- $connection = $this->getConnection();
- $directories = explode('/', $dirname);
-
- foreach ($directories as $directory) {
- if (false === $this->createActualDirectory($directory, $connection)) {
- $this->setConnectionRoot();
-
- return false;
- }
-
- ftp_chdir($connection, $directory);
- }
-
- $this->setConnectionRoot();
-
- return ['type' => 'dir', 'path' => $dirname];
- }
-
- /**
- * Create a directory.
- *
- * @param string $directory
- * @param resource $connection
- *
- * @return bool
- */
- protected function createActualDirectory($directory, $connection)
- {
- // List the current directory
- $listing = ftp_nlist($connection, '.') ?: [];
-
- foreach ($listing as $key => $item) {
- if (preg_match('~^\./.*~', $item)) {
- $listing[$key] = substr($item, 2);
- }
- }
-
- if (in_array($directory, $listing, true)) {
- return true;
- }
-
- return (boolean) ftp_mkdir($connection, $directory);
- }
-
- /**
- * @inheritdoc
- */
- public function getMetadata($path)
- {
- if ($path === '') {
- return ['type' => 'dir', 'path' => ''];
- }
-
- if (@ftp_chdir($this->getConnection(), $path) === true) {
- $this->setConnectionRoot();
-
- return ['type' => 'dir', 'path' => $path];
- }
-
- $listing = $this->ftpRawlist('-A', $path);
-
- if (empty($listing) || in_array('total 0', $listing, true)) {
- return false;
- }
-
- if (preg_match('/.* not found/', $listing[0])) {
- return false;
- }
-
- if (preg_match('/^total [0-9]*$/', $listing[0])) {
- array_shift($listing);
- }
-
- return $this->normalizeObject($listing[0], '');
- }
-
- /**
- * @inheritdoc
- */
- public function getMimetype($path)
- {
- if ( ! $metadata = $this->getMetadata($path)) {
- return false;
- }
-
- $metadata['mimetype'] = MimeType::detectByFilename($path);
-
- return $metadata;
- }
-
- /**
- * @inheritdoc
- */
- public function getTimestamp($path)
- {
- $timestamp = ftp_mdtm($this->getConnection(), $path);
-
- return ($timestamp !== -1) ? ['path' => $path, 'timestamp' => $timestamp] : false;
- }
-
- /**
- * @inheritdoc
- */
- public function read($path)
- {
- if ( ! $object = $this->readStream($path)) {
- return false;
- }
-
- $object['contents'] = stream_get_contents($object['stream']);
- fclose($object['stream']);
- unset($object['stream']);
-
- return $object;
- }
-
- /**
- * @inheritdoc
- */
- public function readStream($path)
- {
- $stream = fopen('php://temp', 'w+b');
- $result = ftp_fget($this->getConnection(), $stream, $path, $this->transferMode);
- rewind($stream);
-
- if ( ! $result) {
- fclose($stream);
-
- return false;
- }
-
- return ['type' => 'file', 'path' => $path, 'stream' => $stream];
- }
-
- /**
- * @inheritdoc
- */
- public function setVisibility($path, $visibility)
- {
- $mode = $visibility === AdapterInterface::VISIBILITY_PUBLIC ? $this->getPermPublic() : $this->getPermPrivate();
-
- if ( ! ftp_chmod($this->getConnection(), $mode, $path)) {
- return false;
- }
-
- return compact('path', 'visibility');
- }
-
- /**
- * @inheritdoc
- *
- * @param string $directory
- */
- protected function listDirectoryContents($directory, $recursive = true)
- {
- if ($recursive && $this->recurseManually) {
- return $this->listDirectoryContentsRecursive($directory);
- }
-
- $options = $recursive ? '-alnR' : '-aln';
- $listing = $this->ftpRawlist($options, $directory);
-
- return $listing ? $this->normalizeListing($listing, $directory) : [];
- }
-
- /**
- * @inheritdoc
- *
- * @param string $directory
- */
- protected function listDirectoryContentsRecursive($directory)
- {
- $listing = $this->normalizeListing($this->ftpRawlist('-aln', $directory) ?: [], $directory);
- $output = [];
-
- foreach ($listing as $item) {
- $output[] = $item;
- if ($item['type'] !== 'dir') {
- continue;
- }
- $output = array_merge($output, $this->listDirectoryContentsRecursive($item['path']));
- }
-
- return $output;
- }
-
- /**
- * Check if the connection is open.
- *
- * @return bool
- *
- * @throws ConnectionErrorException
- */
- public function isConnected()
- {
- return is_resource($this->connection)
- && $this->getRawExecResponseCode('NOOP') === 200;
- }
-
- /**
- * @return bool
- */
- protected function isPureFtpdServer()
- {
- $response = ftp_raw($this->connection, 'HELP');
-
- return stripos(implode(' ', $response), 'Pure-FTPd') !== false;
- }
-
- /**
- * The ftp_rawlist function with optional escaping.
- *
- * @param string $options
- * @param string $path
- *
- * @return array
- */
- protected function ftpRawlist($options, $path)
- {
- $connection = $this->getConnection();
-
- if ($this->isPureFtpd) {
- $path = str_replace(' ', '\ ', $path);
- $this->escapePath($path);
- }
-
- return ftp_rawlist($connection, $options . ' ' . $path);
- }
-
- private function getRawExecResponseCode($command)
- {
- $response = @ftp_raw($this->connection, trim($command));
-
- return (int) preg_replace('/\D/', '', implode(' ', $response));
- }
-}
diff --git a/league/flysystem/src/Adapter/Ftpd.php b/league/flysystem/src/Adapter/Ftpd.php
deleted file mode 100644
index 7e71d19f6..000000000
--- a/league/flysystem/src/Adapter/Ftpd.php
+++ /dev/null
@@ -1,48 +0,0 @@
- 'dir', 'path' => ''];
- }
-
- if (@ftp_chdir($this->getConnection(), $path) === true) {
- $this->setConnectionRoot();
-
- return ['type' => 'dir', 'path' => $path];
- }
-
- $object = ftp_raw($this->getConnection(), 'STAT ' . $this->escapePath($path));
-
- if ( ! $object || count($object) < 3) {
- return false;
- }
-
- if (substr($object[1], 0, 5) === "ftpd:") {
- return false;
- }
-
- return $this->normalizeObject($object[1], '');
- }
-
- /**
- * @inheritdoc
- */
- protected function listDirectoryContents($directory, $recursive = true)
- {
- $listing = ftp_rawlist($this->getConnection(), $this->escapePath($directory), $recursive);
-
- if ($listing === false || ( ! empty($listing) && substr($listing[0], 0, 5) === "ftpd:")) {
- return [];
- }
-
- return $this->normalizeListing($listing, $directory);
- }
-}
diff --git a/league/flysystem/src/Adapter/Local.php b/league/flysystem/src/Adapter/Local.php
deleted file mode 100644
index 747c463ec..000000000
--- a/league/flysystem/src/Adapter/Local.php
+++ /dev/null
@@ -1,533 +0,0 @@
- [
- 'public' => 0644,
- 'private' => 0600,
- ],
- 'dir' => [
- 'public' => 0755,
- 'private' => 0700,
- ],
- ];
-
- /**
- * @var string
- */
- protected $pathSeparator = DIRECTORY_SEPARATOR;
-
- /**
- * @var array
- */
- protected $permissionMap;
-
- /**
- * @var int
- */
- protected $writeFlags;
-
- /**
- * @var int
- */
- private $linkHandling;
-
- /**
- * Constructor.
- *
- * @param string $root
- * @param int $writeFlags
- * @param int $linkHandling
- * @param array $permissions
- *
- * @throws LogicException
- */
- public function __construct($root, $writeFlags = LOCK_EX, $linkHandling = self::DISALLOW_LINKS, array $permissions = [])
- {
- $root = is_link($root) ? realpath($root) : $root;
- $this->permissionMap = array_replace_recursive(static::$permissions, $permissions);
- $this->ensureDirectory($root);
-
- if ( ! is_dir($root) || ! is_readable($root)) {
- throw new LogicException('The root path ' . $root . ' is not readable.');
- }
-
- $this->setPathPrefix($root);
- $this->writeFlags = $writeFlags;
- $this->linkHandling = $linkHandling;
- }
-
- /**
- * Ensure the root directory exists.
- *
- * @param string $root root directory path
- *
- * @return void
- *
- * @throws Exception in case the root directory can not be created
- */
- protected function ensureDirectory($root)
- {
- if ( ! is_dir($root)) {
- $umask = umask(0);
-
- if ( ! @mkdir($root, $this->permissionMap['dir']['public'], true)) {
- $mkdirError = error_get_last();
- }
-
- umask($umask);
- clearstatcache(false, $root);
-
- if ( ! is_dir($root)) {
- $errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : '';
- throw new Exception(sprintf('Impossible to create the root directory "%s". %s', $root, $errorMessage));
- }
- }
- }
-
- /**
- * @inheritdoc
- */
- public function has($path)
- {
- $location = $this->applyPathPrefix($path);
-
- return file_exists($location);
- }
-
- /**
- * @inheritdoc
- */
- public function write($path, $contents, Config $config)
- {
- $location = $this->applyPathPrefix($path);
- $this->ensureDirectory(dirname($location));
-
- if (($size = file_put_contents($location, $contents, $this->writeFlags)) === false) {
- return false;
- }
-
- $type = 'file';
- $result = compact('contents', 'type', 'size', 'path');
-
- if ($visibility = $config->get('visibility')) {
- $result['visibility'] = $visibility;
- $this->setVisibility($path, $visibility);
- }
-
- return $result;
- }
-
- /**
- * @inheritdoc
- */
- public function writeStream($path, $resource, Config $config)
- {
- $location = $this->applyPathPrefix($path);
- $this->ensureDirectory(dirname($location));
- $stream = fopen($location, 'w+b');
-
- if ( ! $stream || stream_copy_to_stream($resource, $stream) === false || ! fclose($stream)) {
- return false;
- }
-
- $type = 'file';
- $result = compact('type', 'path');
-
- if ($visibility = $config->get('visibility')) {
- $this->setVisibility($path, $visibility);
- $result['visibility'] = $visibility;
- }
-
- return $result;
- }
-
- /**
- * @inheritdoc
- */
- public function readStream($path)
- {
- $location = $this->applyPathPrefix($path);
- $stream = fopen($location, 'rb');
-
- return ['type' => 'file', 'path' => $path, 'stream' => $stream];
- }
-
- /**
- * @inheritdoc
- */
- public function updateStream($path, $resource, Config $config)
- {
- return $this->writeStream($path, $resource, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function update($path, $contents, Config $config)
- {
- $location = $this->applyPathPrefix($path);
- $size = file_put_contents($location, $contents, $this->writeFlags);
-
- if ($size === false) {
- return false;
- }
-
- $type = 'file';
-
- $result = compact('type', 'path', 'size', 'contents');
-
- if ($visibility = $config->get('visibility')) {
- $this->setVisibility($path, $visibility);
- $result['visibility'] = $visibility;
- }
-
- return $result;
- }
-
- /**
- * @inheritdoc
- */
- public function read($path)
- {
- $location = $this->applyPathPrefix($path);
- $contents = @file_get_contents($location);
-
- if ($contents === false) {
- return false;
- }
-
- return ['type' => 'file', 'path' => $path, 'contents' => $contents];
- }
-
- /**
- * @inheritdoc
- */
- public function rename($path, $newpath)
- {
- $location = $this->applyPathPrefix($path);
- $destination = $this->applyPathPrefix($newpath);
- $parentDirectory = $this->applyPathPrefix(Util::dirname($newpath));
- $this->ensureDirectory($parentDirectory);
-
- return rename($location, $destination);
- }
-
- /**
- * @inheritdoc
- */
- public function copy($path, $newpath)
- {
- $location = $this->applyPathPrefix($path);
- $destination = $this->applyPathPrefix($newpath);
- $this->ensureDirectory(dirname($destination));
-
- return copy($location, $destination);
- }
-
- /**
- * @inheritdoc
- */
- public function delete($path)
- {
- $location = $this->applyPathPrefix($path);
-
- return @unlink($location);
- }
-
- /**
- * @inheritdoc
- */
- public function listContents($directory = '', $recursive = false)
- {
- $result = [];
- $location = $this->applyPathPrefix($directory);
-
- if ( ! is_dir($location)) {
- return [];
- }
-
- $iterator = $recursive ? $this->getRecursiveDirectoryIterator($location) : $this->getDirectoryIterator($location);
-
- foreach ($iterator as $file) {
- $path = $this->getFilePath($file);
-
- if (preg_match('#(^|/|\\\\)\.{1,2}$#', $path)) {
- continue;
- }
-
- $result[] = $this->normalizeFileInfo($file);
- }
-
- unset($iterator);
-
- return array_filter($result);
- }
-
- /**
- * @inheritdoc
- */
- public function getMetadata($path)
- {
- $location = $this->applyPathPrefix($path);
- clearstatcache(false, $location);
- $info = new SplFileInfo($location);
-
- return $this->normalizeFileInfo($info);
- }
-
- /**
- * @inheritdoc
- */
- public function getSize($path)
- {
- return $this->getMetadata($path);
- }
-
- /**
- * @inheritdoc
- */
- public function getMimetype($path)
- {
- $location = $this->applyPathPrefix($path);
- $finfo = new Finfo(FILEINFO_MIME_TYPE);
- $mimetype = $finfo->file($location);
-
- if (in_array($mimetype, ['application/octet-stream', 'inode/x-empty', 'application/x-empty'])) {
- $mimetype = Util\MimeType::detectByFilename($location);
- }
-
- return ['path' => $path, 'type' => 'file', 'mimetype' => $mimetype];
- }
-
- /**
- * @inheritdoc
- */
- public function getTimestamp($path)
- {
- return $this->getMetadata($path);
- }
-
- /**
- * @inheritdoc
- */
- public function getVisibility($path)
- {
- $location = $this->applyPathPrefix($path);
- clearstatcache(false, $location);
- $permissions = octdec(substr(sprintf('%o', fileperms($location)), -4));
- $type = is_dir($location) ? 'dir' : 'file';
-
- foreach ($this->permissionMap[$type] as $visibility => $visibilityPermissions) {
- if ($visibilityPermissions == $permissions) {
- return compact('path', 'visibility');
- }
- }
-
- $visibility = substr(sprintf('%o', fileperms($location)), -4);
-
- return compact('path', 'visibility');
- }
-
- /**
- * @inheritdoc
- */
- public function setVisibility($path, $visibility)
- {
- $location = $this->applyPathPrefix($path);
- $type = is_dir($location) ? 'dir' : 'file';
- $success = chmod($location, $this->permissionMap[$type][$visibility]);
-
- if ($success === false) {
- return false;
- }
-
- return compact('path', 'visibility');
- }
-
- /**
- * @inheritdoc
- */
- public function createDir($dirname, Config $config)
- {
- $location = $this->applyPathPrefix($dirname);
- $umask = umask(0);
- $visibility = $config->get('visibility', 'public');
- $return = ['path' => $dirname, 'type' => 'dir'];
-
- if ( ! is_dir($location)) {
- if (false === @mkdir($location, $this->permissionMap['dir'][$visibility], true)
- || false === is_dir($location)) {
- $return = false;
- }
- }
-
- umask($umask);
-
- return $return;
- }
-
- /**
- * @inheritdoc
- */
- public function deleteDir($dirname)
- {
- $location = $this->applyPathPrefix($dirname);
-
- if ( ! is_dir($location)) {
- return false;
- }
-
- $contents = $this->getRecursiveDirectoryIterator($location, RecursiveIteratorIterator::CHILD_FIRST);
-
- /** @var SplFileInfo $file */
- foreach ($contents as $file) {
- $this->guardAgainstUnreadableFileInfo($file);
- $this->deleteFileInfoObject($file);
- }
-
- unset($contents);
-
- return rmdir($location);
- }
-
- /**
- * @param SplFileInfo $file
- */
- protected function deleteFileInfoObject(SplFileInfo $file)
- {
- switch ($file->getType()) {
- case 'dir':
- rmdir($file->getRealPath());
- break;
- case 'link':
- unlink($file->getPathname());
- break;
- default:
- unlink($file->getRealPath());
- }
- }
-
- /**
- * Normalize the file info.
- *
- * @param SplFileInfo $file
- *
- * @return array|void
- *
- * @throws NotSupportedException
- */
- protected function normalizeFileInfo(SplFileInfo $file)
- {
- if ( ! $file->isLink()) {
- return $this->mapFileInfo($file);
- }
-
- if ($this->linkHandling & self::DISALLOW_LINKS) {
- throw NotSupportedException::forLink($file);
- }
- }
-
- /**
- * Get the normalized path from a SplFileInfo object.
- *
- * @param SplFileInfo $file
- *
- * @return string
- */
- protected function getFilePath(SplFileInfo $file)
- {
- $location = $file->getPathname();
- $path = $this->removePathPrefix($location);
-
- return trim(str_replace('\\', '/', $path), '/');
- }
-
- /**
- * @param string $path
- * @param int $mode
- *
- * @return RecursiveIteratorIterator
- */
- protected function getRecursiveDirectoryIterator($path, $mode = RecursiveIteratorIterator::SELF_FIRST)
- {
- return new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS),
- $mode
- );
- }
-
- /**
- * @param string $path
- *
- * @return DirectoryIterator
- */
- protected function getDirectoryIterator($path)
- {
- $iterator = new DirectoryIterator($path);
-
- return $iterator;
- }
-
- /**
- * @param SplFileInfo $file
- *
- * @return array
- */
- protected function mapFileInfo(SplFileInfo $file)
- {
- $normalized = [
- 'type' => $file->getType(),
- 'path' => $this->getFilePath($file),
- ];
-
- $normalized['timestamp'] = $file->getMTime();
-
- if ($normalized['type'] === 'file') {
- $normalized['size'] = $file->getSize();
- }
-
- return $normalized;
- }
-
- /**
- * @param SplFileInfo $file
- *
- * @throws UnreadableFileException
- */
- protected function guardAgainstUnreadableFileInfo(SplFileInfo $file)
- {
- if ( ! $file->isReadable()) {
- throw UnreadableFileException::forFileInfo($file);
- }
- }
-}
diff --git a/league/flysystem/src/Adapter/NullAdapter.php b/league/flysystem/src/Adapter/NullAdapter.php
deleted file mode 100644
index 2527087f7..000000000
--- a/league/flysystem/src/Adapter/NullAdapter.php
+++ /dev/null
@@ -1,144 +0,0 @@
-get('visibility')) {
- $result['visibility'] = $visibility;
- }
-
- return $result;
- }
-
- /**
- * @inheritdoc
- */
- public function update($path, $contents, Config $config)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function read($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function rename($path, $newpath)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function delete($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function listContents($directory = '', $recursive = false)
- {
- return [];
- }
-
- /**
- * @inheritdoc
- */
- public function getMetadata($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function getSize($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function getMimetype($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function getTimestamp($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function getVisibility($path)
- {
- return false;
- }
-
- /**
- * @inheritdoc
- */
- public function setVisibility($path, $visibility)
- {
- return compact('visibility');
- }
-
- /**
- * @inheritdoc
- */
- public function createDir($dirname, Config $config)
- {
- return ['path' => $dirname, 'type' => 'dir'];
- }
-
- /**
- * @inheritdoc
- */
- public function deleteDir($dirname)
- {
- return false;
- }
-}
diff --git a/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php b/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php
deleted file mode 100644
index fc0a747ac..000000000
--- a/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php
+++ /dev/null
@@ -1,33 +0,0 @@
-readStream($path);
-
- if ($response === false || ! is_resource($response['stream'])) {
- return false;
- }
-
- $result = $this->writeStream($newpath, $response['stream'], new Config());
-
- if ($result !== false && is_resource($response['stream'])) {
- fclose($response['stream']);
- }
-
- return $result !== false;
- }
-
- // Required abstract method
-
- /**
- * @param string $path
- *
- * @return resource
- */
- abstract public function readStream($path);
-
- /**
- * @param string $path
- * @param resource $resource
- * @param Config $config
- *
- * @return resource
- */
- abstract public function writeStream($path, $resource, Config $config);
-}
diff --git a/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php b/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php
deleted file mode 100644
index 2b31c01d6..000000000
--- a/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php
+++ /dev/null
@@ -1,44 +0,0 @@
-read($path)) {
- return false;
- }
-
- $stream = fopen('php://temp', 'w+b');
- fwrite($stream, $data['contents']);
- rewind($stream);
- $data['stream'] = $stream;
- unset($data['contents']);
-
- return $data;
- }
-
- /**
- * Reads a file.
- *
- * @param string $path
- *
- * @return array|false
- *
- * @see League\Flysystem\ReadInterface::read()
- */
- abstract public function read($path);
-}
diff --git a/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php b/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php
deleted file mode 100644
index 80424960c..000000000
--- a/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php
+++ /dev/null
@@ -1,9 +0,0 @@
-stream($path, $resource, $config, 'write');
- }
-
- /**
- * Update a file using a stream.
- *
- * @param string $path
- * @param resource $resource
- * @param Config $config Config object or visibility setting
- *
- * @return mixed false of file metadata
- */
- public function updateStream($path, $resource, Config $config)
- {
- return $this->stream($path, $resource, $config, 'update');
- }
-
- // Required abstract methods
- abstract public function write($pash, $contents, Config $config);
- abstract public function update($pash, $contents, Config $config);
-}
diff --git a/league/flysystem/src/Adapter/SynologyFtp.php b/league/flysystem/src/Adapter/SynologyFtp.php
deleted file mode 100644
index fe0d344cf..000000000
--- a/league/flysystem/src/Adapter/SynologyFtp.php
+++ /dev/null
@@ -1,8 +0,0 @@
-settings = $settings;
- }
-
- /**
- * Get a setting.
- *
- * @param string $key
- * @param mixed $default
- *
- * @return mixed config setting or default when not found
- */
- public function get($key, $default = null)
- {
- if ( ! array_key_exists($key, $this->settings)) {
- return $this->getDefault($key, $default);
- }
-
- return $this->settings[$key];
- }
-
- /**
- * Check if an item exists by key.
- *
- * @param string $key
- *
- * @return bool
- */
- public function has($key)
- {
- if (array_key_exists($key, $this->settings)) {
- return true;
- }
-
- return $this->fallback instanceof Config
- ? $this->fallback->has($key)
- : false;
- }
-
- /**
- * Try to retrieve a default setting from a config fallback.
- *
- * @param string $key
- * @param mixed $default
- *
- * @return mixed config setting or default when not found
- */
- protected function getDefault($key, $default)
- {
- if ( ! $this->fallback) {
- return $default;
- }
-
- return $this->fallback->get($key, $default);
- }
-
- /**
- * Set a setting.
- *
- * @param string $key
- * @param mixed $value
- *
- * @return $this
- */
- public function set($key, $value)
- {
- $this->settings[$key] = $value;
-
- return $this;
- }
-
- /**
- * Set the fallback.
- *
- * @param Config $fallback
- *
- * @return $this
- */
- public function setFallback(Config $fallback)
- {
- $this->fallback = $fallback;
-
- return $this;
- }
-}
diff --git a/league/flysystem/src/ConfigAwareTrait.php b/league/flysystem/src/ConfigAwareTrait.php
deleted file mode 100644
index 202d605da..000000000
--- a/league/flysystem/src/ConfigAwareTrait.php
+++ /dev/null
@@ -1,49 +0,0 @@
-config = $config ? Util::ensureConfig($config) : new Config;
- }
-
- /**
- * Get the Config.
- *
- * @return Config config object
- */
- public function getConfig()
- {
- return $this->config;
- }
-
- /**
- * Convert a config array to a Config object with the correct fallback.
- *
- * @param array $config
- *
- * @return Config
- */
- protected function prepareConfig(array $config)
- {
- $config = new Config($config);
- $config->setFallback($this->getConfig());
-
- return $config;
- }
-}
diff --git a/league/flysystem/src/ConnectionErrorException.php b/league/flysystem/src/ConnectionErrorException.php
deleted file mode 100644
index adb651d3d..000000000
--- a/league/flysystem/src/ConnectionErrorException.php
+++ /dev/null
@@ -1,9 +0,0 @@
-filesystem->deleteDir($this->path);
- }
-
- /**
- * List the directory contents.
- *
- * @param bool $recursive
- *
- * @return array|bool directory contents or false
- */
- public function getContents($recursive = false)
- {
- return $this->filesystem->listContents($this->path, $recursive);
- }
-}
diff --git a/league/flysystem/src/Exception.php b/league/flysystem/src/Exception.php
deleted file mode 100644
index 4596c0a9a..000000000
--- a/league/flysystem/src/Exception.php
+++ /dev/null
@@ -1,8 +0,0 @@
-filesystem->has($this->path);
- }
-
- /**
- * Read the file.
- *
- * @return string|false file contents
- */
- public function read()
- {
- return $this->filesystem->read($this->path);
- }
-
- /**
- * Read the file as a stream.
- *
- * @return resource|false file stream
- */
- public function readStream()
- {
- return $this->filesystem->readStream($this->path);
- }
-
- /**
- * Write the new file.
- *
- * @param string $content
- *
- * @return bool success boolean
- */
- public function write($content)
- {
- return $this->filesystem->write($this->path, $content);
- }
-
- /**
- * Write the new file using a stream.
- *
- * @param resource $resource
- *
- * @return bool success boolean
- */
- public function writeStream($resource)
- {
- return $this->filesystem->writeStream($this->path, $resource);
- }
-
- /**
- * Update the file contents.
- *
- * @param string $content
- *
- * @return bool success boolean
- */
- public function update($content)
- {
- return $this->filesystem->update($this->path, $content);
- }
-
- /**
- * Update the file contents with a stream.
- *
- * @param resource $resource
- *
- * @return bool success boolean
- */
- public function updateStream($resource)
- {
- return $this->filesystem->updateStream($this->path, $resource);
- }
-
- /**
- * Create the file or update if exists.
- *
- * @param string $content
- *
- * @return bool success boolean
- */
- public function put($content)
- {
- return $this->filesystem->put($this->path, $content);
- }
-
- /**
- * Create the file or update if exists using a stream.
- *
- * @param resource $resource
- *
- * @return bool success boolean
- */
- public function putStream($resource)
- {
- return $this->filesystem->putStream($this->path, $resource);
- }
-
- /**
- * Rename the file.
- *
- * @param string $newpath
- *
- * @return bool success boolean
- */
- public function rename($newpath)
- {
- if ($this->filesystem->rename($this->path, $newpath)) {
- $this->path = $newpath;
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Copy the file.
- *
- * @param string $newpath
- *
- * @return File|false new file or false
- */
- public function copy($newpath)
- {
- if ($this->filesystem->copy($this->path, $newpath)) {
- return new File($this->filesystem, $newpath);
- }
-
- return false;
- }
-
- /**
- * Get the file's timestamp.
- *
- * @return string|false The timestamp or false on failure.
- */
- public function getTimestamp()
- {
- return $this->filesystem->getTimestamp($this->path);
- }
-
- /**
- * Get the file's mimetype.
- *
- * @return string|false The file mime-type or false on failure.
- */
- public function getMimetype()
- {
- return $this->filesystem->getMimetype($this->path);
- }
-
- /**
- * Get the file's visibility.
- *
- * @return string|false The visibility (public|private) or false on failure.
- */
- public function getVisibility()
- {
- return $this->filesystem->getVisibility($this->path);
- }
-
- /**
- * Get the file's metadata.
- *
- * @return array|false The file metadata or false on failure.
- */
- public function getMetadata()
- {
- return $this->filesystem->getMetadata($this->path);
- }
-
- /**
- * Get the file size.
- *
- * @return int|false The file size or false on failure.
- */
- public function getSize()
- {
- return $this->filesystem->getSize($this->path);
- }
-
- /**
- * Delete the file.
- *
- * @return bool success boolean
- */
- public function delete()
- {
- return $this->filesystem->delete($this->path);
- }
-}
diff --git a/league/flysystem/src/FileExistsException.php b/league/flysystem/src/FileExistsException.php
deleted file mode 100644
index c82e20c16..000000000
--- a/league/flysystem/src/FileExistsException.php
+++ /dev/null
@@ -1,37 +0,0 @@
-path = $path;
-
- parent::__construct('File already exists at path: ' . $this->getPath(), $code, $previous);
- }
-
- /**
- * Get the path which was found.
- *
- * @return string
- */
- public function getPath()
- {
- return $this->path;
- }
-}
diff --git a/league/flysystem/src/FileNotFoundException.php b/league/flysystem/src/FileNotFoundException.php
deleted file mode 100644
index 989df69bb..000000000
--- a/league/flysystem/src/FileNotFoundException.php
+++ /dev/null
@@ -1,37 +0,0 @@
-path = $path;
-
- parent::__construct('File not found at path: ' . $this->getPath(), $code, $previous);
- }
-
- /**
- * Get the path which was not found.
- *
- * @return string
- */
- public function getPath()
- {
- return $this->path;
- }
-}
diff --git a/league/flysystem/src/Filesystem.php b/league/flysystem/src/Filesystem.php
deleted file mode 100644
index 59cc82ee4..000000000
--- a/league/flysystem/src/Filesystem.php
+++ /dev/null
@@ -1,408 +0,0 @@
-adapter = $adapter;
- $this->setConfig($config);
- }
-
- /**
- * Get the Adapter.
- *
- * @return AdapterInterface adapter
- */
- public function getAdapter()
- {
- return $this->adapter;
- }
-
- /**
- * @inheritdoc
- */
- public function has($path)
- {
- $path = Util::normalizePath($path);
-
- return strlen($path) === 0 ? false : (bool) $this->getAdapter()->has($path);
- }
-
- /**
- * @inheritdoc
- */
- public function write($path, $contents, array $config = [])
- {
- $path = Util::normalizePath($path);
- $this->assertAbsent($path);
- $config = $this->prepareConfig($config);
-
- return (bool) $this->getAdapter()->write($path, $contents, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function writeStream($path, $resource, array $config = [])
- {
- if ( ! is_resource($resource) || get_resource_type($resource) !== 'stream') {
- throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.');
- }
-
- $path = Util::normalizePath($path);
- $this->assertAbsent($path);
- $config = $this->prepareConfig($config);
-
- Util::rewindStream($resource);
-
- return (bool) $this->getAdapter()->writeStream($path, $resource, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function put($path, $contents, array $config = [])
- {
- $path = Util::normalizePath($path);
- $config = $this->prepareConfig($config);
-
- if ( ! $this->getAdapter() instanceof CanOverwriteFiles && $this->has($path)) {
- return (bool) $this->getAdapter()->update($path, $contents, $config);
- }
-
- return (bool) $this->getAdapter()->write($path, $contents, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function putStream($path, $resource, array $config = [])
- {
- if ( ! is_resource($resource) || get_resource_type($resource) !== 'stream') {
- throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.');
- }
-
- $path = Util::normalizePath($path);
- $config = $this->prepareConfig($config);
- Util::rewindStream($resource);
-
- if ( ! $this->getAdapter() instanceof CanOverwriteFiles && $this->has($path)) {
- return (bool) $this->getAdapter()->updateStream($path, $resource, $config);
- }
-
- return (bool) $this->getAdapter()->writeStream($path, $resource, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function readAndDelete($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
- $contents = $this->read($path);
-
- if ($contents === false) {
- return false;
- }
-
- $this->delete($path);
-
- return $contents;
- }
-
- /**
- * @inheritdoc
- */
- public function update($path, $contents, array $config = [])
- {
- $path = Util::normalizePath($path);
- $config = $this->prepareConfig($config);
-
- $this->assertPresent($path);
-
- return (bool) $this->getAdapter()->update($path, $contents, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function updateStream($path, $resource, array $config = [])
- {
- if ( ! is_resource($resource) || get_resource_type($resource) !== 'stream') {
- throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.');
- }
-
- $path = Util::normalizePath($path);
- $config = $this->prepareConfig($config);
- $this->assertPresent($path);
- Util::rewindStream($resource);
-
- return (bool) $this->getAdapter()->updateStream($path, $resource, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function read($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- if ( ! ($object = $this->getAdapter()->read($path))) {
- return false;
- }
-
- return $object['contents'];
- }
-
- /**
- * @inheritdoc
- */
- public function readStream($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- if ( ! $object = $this->getAdapter()->readStream($path)) {
- return false;
- }
-
- return $object['stream'];
- }
-
- /**
- * @inheritdoc
- */
- public function rename($path, $newpath)
- {
- $path = Util::normalizePath($path);
- $newpath = Util::normalizePath($newpath);
- $this->assertPresent($path);
- $this->assertAbsent($newpath);
-
- return (bool) $this->getAdapter()->rename($path, $newpath);
- }
-
- /**
- * @inheritdoc
- */
- public function copy($path, $newpath)
- {
- $path = Util::normalizePath($path);
- $newpath = Util::normalizePath($newpath);
- $this->assertPresent($path);
- $this->assertAbsent($newpath);
-
- return $this->getAdapter()->copy($path, $newpath);
- }
-
- /**
- * @inheritdoc
- */
- public function delete($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- return $this->getAdapter()->delete($path);
- }
-
- /**
- * @inheritdoc
- */
- public function deleteDir($dirname)
- {
- $dirname = Util::normalizePath($dirname);
-
- if ($dirname === '') {
- throw new RootViolationException('Root directories can not be deleted.');
- }
-
- return (bool) $this->getAdapter()->deleteDir($dirname);
- }
-
- /**
- * @inheritdoc
- */
- public function createDir($dirname, array $config = [])
- {
- $dirname = Util::normalizePath($dirname);
- $config = $this->prepareConfig($config);
-
- return (bool) $this->getAdapter()->createDir($dirname, $config);
- }
-
- /**
- * @inheritdoc
- */
- public function listContents($directory = '', $recursive = false)
- {
- $directory = Util::normalizePath($directory);
- $contents = $this->getAdapter()->listContents($directory, $recursive);
-
- return (new ContentListingFormatter($directory, $recursive, $this->config->get('case_sensitive', true)))
- ->formatListing($contents);
- }
-
- /**
- * @inheritdoc
- */
- public function getMimetype($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- if (( ! $object = $this->getAdapter()->getMimetype($path)) || ! array_key_exists('mimetype', $object)) {
- return false;
- }
-
- return $object['mimetype'];
- }
-
- /**
- * @inheritdoc
- */
- public function getTimestamp($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- if (( ! $object = $this->getAdapter()->getTimestamp($path)) || ! array_key_exists('timestamp', $object)) {
- return false;
- }
-
- return (int) $object['timestamp'];
- }
-
- /**
- * @inheritdoc
- */
- public function getVisibility($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- if (( ! $object = $this->getAdapter()->getVisibility($path)) || ! array_key_exists('visibility', $object)) {
- return false;
- }
-
- return $object['visibility'];
- }
-
- /**
- * @inheritdoc
- */
- public function getSize($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- if (( ! $object = $this->getAdapter()->getSize($path)) || ! array_key_exists('size', $object)) {
- return false;
- }
-
- return (int) $object['size'];
- }
-
- /**
- * @inheritdoc
- */
- public function setVisibility($path, $visibility)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- return (bool) $this->getAdapter()->setVisibility($path, $visibility);
- }
-
- /**
- * @inheritdoc
- */
- public function getMetadata($path)
- {
- $path = Util::normalizePath($path);
- $this->assertPresent($path);
-
- return $this->getAdapter()->getMetadata($path);
- }
-
- /**
- * @inheritdoc
- */
- public function get($path, Handler $handler = null)
- {
- $path = Util::normalizePath($path);
-
- if ( ! $handler) {
- $metadata = $this->getMetadata($path);
- $handler = ($metadata && $metadata['type'] === 'file') ? new File($this, $path) : new Directory($this, $path);
- }
-
- $handler->setPath($path);
- $handler->setFilesystem($this);
-
- return $handler;
- }
-
- /**
- * Assert a file is present.
- *
- * @param string $path path to file
- *
- * @throws FileNotFoundException
- *
- * @return void
- */
- public function assertPresent($path)
- {
- if ($this->config->get('disable_asserts', false) === false && ! $this->has($path)) {
- throw new FileNotFoundException($path);
- }
- }
-
- /**
- * Assert a file is absent.
- *
- * @param string $path path to file
- *
- * @throws FileExistsException
- *
- * @return void
- */
- public function assertAbsent($path)
- {
- if ($this->config->get('disable_asserts', false) === false && $this->has($path)) {
- throw new FileExistsException($path);
- }
- }
-}
diff --git a/league/flysystem/src/FilesystemException.php b/league/flysystem/src/FilesystemException.php
deleted file mode 100644
index 3121e533d..000000000
--- a/league/flysystem/src/FilesystemException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-path = $path;
- $this->filesystem = $filesystem;
- }
-
- /**
- * Check whether the entree is a directory.
- *
- * @return bool
- */
- public function isDir()
- {
- return $this->getType() === 'dir';
- }
-
- /**
- * Check whether the entree is a file.
- *
- * @return bool
- */
- public function isFile()
- {
- return $this->getType() === 'file';
- }
-
- /**
- * Retrieve the entree type (file|dir).
- *
- * @return string file or dir
- */
- public function getType()
- {
- $metadata = $this->filesystem->getMetadata($this->path);
-
- return $metadata ? $metadata['type'] : 'dir';
- }
-
- /**
- * Set the Filesystem object.
- *
- * @param FilesystemInterface $filesystem
- *
- * @return $this
- */
- public function setFilesystem(FilesystemInterface $filesystem)
- {
- $this->filesystem = $filesystem;
-
- return $this;
- }
-
- /**
- * Retrieve the Filesystem object.
- *
- * @return FilesystemInterface
- */
- public function getFilesystem()
- {
- return $this->filesystem;
- }
-
- /**
- * Set the entree path.
- *
- * @param string $path
- *
- * @return $this
- */
- public function setPath($path)
- {
- $this->path = $path;
-
- return $this;
- }
-
- /**
- * Retrieve the entree path.
- *
- * @return string path
- */
- public function getPath()
- {
- return $this->path;
- }
-
- /**
- * Plugins pass-through.
- *
- * @param string $method
- * @param array $arguments
- *
- * @return mixed
- */
- public function __call($method, array $arguments)
- {
- array_unshift($arguments, $this->path);
- $callback = [$this->filesystem, $method];
-
- try {
- return call_user_func_array($callback, $arguments);
- } catch (BadMethodCallException $e) {
- throw new BadMethodCallException(
- 'Call to undefined method '
- . get_called_class()
- . '::' . $method
- );
- }
- }
-}
diff --git a/league/flysystem/src/InvalidRootException.php b/league/flysystem/src/InvalidRootException.php
deleted file mode 100644
index 468d1d58c..000000000
--- a/league/flysystem/src/InvalidRootException.php
+++ /dev/null
@@ -1,9 +0,0 @@
- Filesystem,]
- *
- * @throws InvalidArgumentException
- */
- public function __construct(array $filesystems = [])
- {
- $this->mountFilesystems($filesystems);
- }
-
- /**
- * Mount filesystems.
- *
- * @param FilesystemInterface[] $filesystems [:prefix => Filesystem,]
- *
- * @throws InvalidArgumentException
- *
- * @return $this
- */
- public function mountFilesystems(array $filesystems)
- {
- foreach ($filesystems as $prefix => $filesystem) {
- $this->mountFilesystem($prefix, $filesystem);
- }
-
- return $this;
- }
-
- /**
- * Mount filesystems.
- *
- * @param string $prefix
- * @param FilesystemInterface $filesystem
- *
- * @throws InvalidArgumentException
- *
- * @return $this
- */
- public function mountFilesystem($prefix, FilesystemInterface $filesystem)
- {
- if ( ! is_string($prefix)) {
- throw new InvalidArgumentException(__METHOD__ . ' expects argument #1 to be a string.');
- }
-
- $this->filesystems[$prefix] = $filesystem;
-
- return $this;
- }
-
- /**
- * Get the filesystem with the corresponding prefix.
- *
- * @param string $prefix
- *
- * @throws FilesystemNotFoundException
- *
- * @return FilesystemInterface
- */
- public function getFilesystem($prefix)
- {
- if ( ! isset($this->filesystems[$prefix])) {
- throw new FilesystemNotFoundException('No filesystem mounted with prefix ' . $prefix);
- }
-
- return $this->filesystems[$prefix];
- }
-
- /**
- * Retrieve the prefix from an arguments array.
- *
- * @param array $arguments
- *
- * @throws InvalidArgumentException
- *
- * @return array [:prefix, :arguments]
- */
- public function filterPrefix(array $arguments)
- {
- if (empty($arguments)) {
- throw new InvalidArgumentException('At least one argument needed');
- }
-
- $path = array_shift($arguments);
-
- if ( ! is_string($path)) {
- throw new InvalidArgumentException('First argument should be a string');
- }
-
- list($prefix, $path) = $this->getPrefixAndPath($path);
- array_unshift($arguments, $path);
-
- return [$prefix, $arguments];
- }
-
- /**
- * @param string $directory
- * @param bool $recursive
- *
- * @throws InvalidArgumentException
- * @throws FilesystemNotFoundException
- *
- * @return array
- */
- public function listContents($directory = '', $recursive = false)
- {
- list($prefix, $directory) = $this->getPrefixAndPath($directory);
- $filesystem = $this->getFilesystem($prefix);
- $result = $filesystem->listContents($directory, $recursive);
-
- foreach ($result as &$file) {
- $file['filesystem'] = $prefix;
- }
-
- return $result;
- }
-
- /**
- * Call forwarder.
- *
- * @param string $method
- * @param array $arguments
- *
- * @throws InvalidArgumentException
- * @throws FilesystemNotFoundException
- *
- * @return mixed
- */
- public function __call($method, $arguments)
- {
- list($prefix, $arguments) = $this->filterPrefix($arguments);
-
- return $this->invokePluginOnFilesystem($method, $arguments, $prefix);
- }
-
- /**
- * @param string $from
- * @param string $to
- * @param array $config
- *
- * @throws InvalidArgumentException
- * @throws FilesystemNotFoundException
- * @throws FileExistsException
- *
- * @return bool
- */
- public function copy($from, $to, array $config = [])
- {
- list($prefixFrom, $from) = $this->getPrefixAndPath($from);
-
- $buffer = $this->getFilesystem($prefixFrom)->readStream($from);
-
- if ($buffer === false) {
- return false;
- }
-
- list($prefixTo, $to) = $this->getPrefixAndPath($to);
-
- $result = $this->getFilesystem($prefixTo)->writeStream($to, $buffer, $config);
-
- if (is_resource($buffer)) {
- fclose($buffer);
- }
-
- return $result;
- }
-
- /**
- * List with plugin adapter.
- *
- * @param array $keys
- * @param string $directory
- * @param bool $recursive
- *
- * @throws InvalidArgumentException
- * @throws FilesystemNotFoundException
- *
- * @return array
- */
- public function listWith(array $keys = [], $directory = '', $recursive = false)
- {
- list($prefix, $directory) = $this->getPrefixAndPath($directory);
- $arguments = [$keys, $directory, $recursive];
-
- return $this->invokePluginOnFilesystem('listWith', $arguments, $prefix);
- }
-
- /**
- * Move a file.
- *
- * @param string $from
- * @param string $to
- * @param array $config
- *
- * @throws InvalidArgumentException
- * @throws FilesystemNotFoundException
- *
- * @return bool
- */
- public function move($from, $to, array $config = [])
- {
- list($prefixFrom, $pathFrom) = $this->getPrefixAndPath($from);
- list($prefixTo, $pathTo) = $this->getPrefixAndPath($to);
-
- if ($prefixFrom === $prefixTo) {
- $filesystem = $this->getFilesystem($prefixFrom);
- $renamed = $filesystem->rename($pathFrom, $pathTo);
-
- if ($renamed && isset($config['visibility'])) {
- return $filesystem->setVisibility($pathTo, $config['visibility']);
- }
-
- return $renamed;
- }
-
- $copied = $this->copy($from, $to, $config);
-
- if ($copied) {
- return $this->delete($from);
- }
-
- return false;
- }
-
- /**
- * Invoke a plugin on a filesystem mounted on a given prefix.
- *
- * @param string $method
- * @param array $arguments
- * @param string $prefix
- *
- * @throws FilesystemNotFoundException
- *
- * @return mixed
- */
- public function invokePluginOnFilesystem($method, $arguments, $prefix)
- {
- $filesystem = $this->getFilesystem($prefix);
-
- try {
- return $this->invokePlugin($method, $arguments, $filesystem);
- } catch (PluginNotFoundException $e) {
- // Let it pass, it's ok, don't panic.
- }
-
- $callback = [$filesystem, $method];
-
- return call_user_func_array($callback, $arguments);
- }
-
- /**
- * @param string $path
- *
- * @throws InvalidArgumentException
- *
- * @return string[] [:prefix, :path]
- */
- protected function getPrefixAndPath($path)
- {
- if (strpos($path, '://') < 1) {
- throw new InvalidArgumentException('No prefix detected in path: ' . $path);
- }
-
- return explode('://', $path, 2);
- }
-
- /**
- * Check whether a file exists.
- *
- * @param string $path
- *
- * @return bool
- */
- public function has($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->has($path);
- }
-
- /**
- * Read a file.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return string|false The file contents or false on failure.
- */
- public function read($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->read($path);
- }
-
- /**
- * Retrieves a read-stream for a path.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return resource|false The path resource or false on failure.
- */
- public function readStream($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->readStream($path);
- }
-
- /**
- * Get a file's metadata.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return array|false The file metadata or false on failure.
- */
- public function getMetadata($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->getMetadata($path);
- }
-
- /**
- * Get a file's size.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return int|false The file size or false on failure.
- */
- public function getSize($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->getSize($path);
- }
-
- /**
- * Get a file's mime-type.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return string|false The file mime-type or false on failure.
- */
- public function getMimetype($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->getMimetype($path);
- }
-
- /**
- * Get a file's timestamp.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return string|false The timestamp or false on failure.
- */
- public function getTimestamp($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->getTimestamp($path);
- }
-
- /**
- * Get a file's visibility.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return string|false The visibility (public|private) or false on failure.
- */
- public function getVisibility($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->getVisibility($path);
- }
-
- /**
- * Write a new file.
- *
- * @param string $path The path of the new file.
- * @param string $contents The file contents.
- * @param array $config An optional configuration array.
- *
- * @throws FileExistsException
- *
- * @return bool True on success, false on failure.
- */
- public function write($path, $contents, array $config = [])
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->write($path, $contents, $config);
- }
-
- /**
- * Write a new file using a stream.
- *
- * @param string $path The path of the new file.
- * @param resource $resource The file handle.
- * @param array $config An optional configuration array.
- *
- * @throws InvalidArgumentException If $resource is not a file handle.
- * @throws FileExistsException
- *
- * @return bool True on success, false on failure.
- */
- public function writeStream($path, $resource, array $config = [])
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->writeStream($path, $resource, $config);
- }
-
- /**
- * Update an existing file.
- *
- * @param string $path The path of the existing file.
- * @param string $contents The file contents.
- * @param array $config An optional configuration array.
- *
- * @throws FileNotFoundException
- *
- * @return bool True on success, false on failure.
- */
- public function update($path, $contents, array $config = [])
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->update($path, $contents, $config);
- }
-
- /**
- * Update an existing file using a stream.
- *
- * @param string $path The path of the existing file.
- * @param resource $resource The file handle.
- * @param array $config An optional configuration array.
- *
- * @throws InvalidArgumentException If $resource is not a file handle.
- * @throws FileNotFoundException
- *
- * @return bool True on success, false on failure.
- */
- public function updateStream($path, $resource, array $config = [])
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->updateStream($path, $resource, $config);
- }
-
- /**
- * Rename a file.
- *
- * @param string $path Path to the existing file.
- * @param string $newpath The new path of the file.
- *
- * @throws FileExistsException Thrown if $newpath exists.
- * @throws FileNotFoundException Thrown if $path does not exist.
- *
- * @return bool True on success, false on failure.
- */
- public function rename($path, $newpath)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->rename($path, $newpath);
- }
-
- /**
- * Delete a file.
- *
- * @param string $path
- *
- * @throws FileNotFoundException
- *
- * @return bool True on success, false on failure.
- */
- public function delete($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->delete($path);
- }
-
- /**
- * Delete a directory.
- *
- * @param string $dirname
- *
- * @throws RootViolationException Thrown if $dirname is empty.
- *
- * @return bool True on success, false on failure.
- */
- public function deleteDir($dirname)
- {
- list($prefix, $dirname) = $this->getPrefixAndPath($dirname);
-
- return $this->getFilesystem($prefix)->deleteDir($dirname);
- }
-
- /**
- * Create a directory.
- *
- * @param string $dirname The name of the new directory.
- * @param array $config An optional configuration array.
- *
- * @return bool True on success, false on failure.
- */
- public function createDir($dirname, array $config = [])
- {
- list($prefix, $dirname) = $this->getPrefixAndPath($dirname);
-
- return $this->getFilesystem($prefix)->createDir($dirname);
- }
-
- /**
- * Set the visibility for a file.
- *
- * @param string $path The path to the file.
- * @param string $visibility One of 'public' or 'private'.
- *
- * @throws FileNotFoundException
- *
- * @return bool True on success, false on failure.
- */
- public function setVisibility($path, $visibility)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->setVisibility($path, $visibility);
- }
-
- /**
- * Create a file or update if exists.
- *
- * @param string $path The path to the file.
- * @param string $contents The file contents.
- * @param array $config An optional configuration array.
- *
- * @return bool True on success, false on failure.
- */
- public function put($path, $contents, array $config = [])
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->put($path, $contents, $config);
- }
-
- /**
- * Create a file or update if exists.
- *
- * @param string $path The path to the file.
- * @param resource $resource The file handle.
- * @param array $config An optional configuration array.
- *
- * @throws InvalidArgumentException Thrown if $resource is not a resource.
- *
- * @return bool True on success, false on failure.
- */
- public function putStream($path, $resource, array $config = [])
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->putStream($path, $resource, $config);
- }
-
- /**
- * Read and delete a file.
- *
- * @param string $path The path to the file.
- *
- * @throws FileNotFoundException
- *
- * @return string|false The file contents, or false on failure.
- */
- public function readAndDelete($path)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->readAndDelete($path);
- }
-
- /**
- * Get a file/directory handler.
- *
- * @deprecated
- *
- * @param string $path The path to the file.
- * @param Handler $handler An optional existing handler to populate.
- *
- * @return Handler Either a file or directory handler.
- */
- public function get($path, Handler $handler = null)
- {
- list($prefix, $path) = $this->getPrefixAndPath($path);
-
- return $this->getFilesystem($prefix)->get($path);
- }
-}
diff --git a/league/flysystem/src/NotSupportedException.php b/league/flysystem/src/NotSupportedException.php
deleted file mode 100644
index e0a989b22..000000000
--- a/league/flysystem/src/NotSupportedException.php
+++ /dev/null
@@ -1,37 +0,0 @@
-getPathname());
- }
-
- /**
- * Create a new exception for a link.
- *
- * @param string $systemType
- *
- * @return static
- */
- public static function forFtpSystemType($systemType)
- {
- $message = "The FTP system type '$systemType' is currently not supported.";
-
- return new static($message);
- }
-}
diff --git a/league/flysystem/src/Plugin/AbstractPlugin.php b/league/flysystem/src/Plugin/AbstractPlugin.php
deleted file mode 100644
index 0d5678976..000000000
--- a/league/flysystem/src/Plugin/AbstractPlugin.php
+++ /dev/null
@@ -1,24 +0,0 @@
-filesystem = $filesystem;
- }
-}
diff --git a/league/flysystem/src/Plugin/EmptyDir.php b/league/flysystem/src/Plugin/EmptyDir.php
deleted file mode 100644
index b5ae7f582..000000000
--- a/league/flysystem/src/Plugin/EmptyDir.php
+++ /dev/null
@@ -1,34 +0,0 @@
-filesystem->listContents($dirname, false);
-
- foreach ($listing as $item) {
- if ($item['type'] === 'dir') {
- $this->filesystem->deleteDir($item['path']);
- } else {
- $this->filesystem->delete($item['path']);
- }
- }
- }
-}
diff --git a/league/flysystem/src/Plugin/ForcedCopy.php b/league/flysystem/src/Plugin/ForcedCopy.php
deleted file mode 100644
index a41e9f3ae..000000000
--- a/league/flysystem/src/Plugin/ForcedCopy.php
+++ /dev/null
@@ -1,44 +0,0 @@
-filesystem->delete($newpath);
- } catch (FileNotFoundException $e) {
- // The destination path does not exist. That's ok.
- $deleted = true;
- }
-
- if ($deleted) {
- return $this->filesystem->copy($path, $newpath);
- }
-
- return false;
- }
-}
diff --git a/league/flysystem/src/Plugin/ForcedRename.php b/league/flysystem/src/Plugin/ForcedRename.php
deleted file mode 100644
index 3f51cd607..000000000
--- a/league/flysystem/src/Plugin/ForcedRename.php
+++ /dev/null
@@ -1,44 +0,0 @@
-filesystem->delete($newpath);
- } catch (FileNotFoundException $e) {
- // The destination path does not exist. That's ok.
- $deleted = true;
- }
-
- if ($deleted) {
- return $this->filesystem->rename($path, $newpath);
- }
-
- return false;
- }
-}
diff --git a/league/flysystem/src/Plugin/GetWithMetadata.php b/league/flysystem/src/Plugin/GetWithMetadata.php
deleted file mode 100644
index 6fe4f0562..000000000
--- a/league/flysystem/src/Plugin/GetWithMetadata.php
+++ /dev/null
@@ -1,51 +0,0 @@
-filesystem->getMetadata($path);
-
- if ( ! $object) {
- return false;
- }
-
- $keys = array_diff($metadata, array_keys($object));
-
- foreach ($keys as $key) {
- if ( ! method_exists($this->filesystem, $method = 'get' . ucfirst($key))) {
- throw new InvalidArgumentException('Could not fetch metadata: ' . $key);
- }
-
- $object[$key] = $this->filesystem->{$method}($path);
- }
-
- return $object;
- }
-}
diff --git a/league/flysystem/src/Plugin/ListFiles.php b/league/flysystem/src/Plugin/ListFiles.php
deleted file mode 100644
index 9669fe7e7..000000000
--- a/league/flysystem/src/Plugin/ListFiles.php
+++ /dev/null
@@ -1,35 +0,0 @@
-filesystem->listContents($directory, $recursive);
-
- $filter = function ($object) {
- return $object['type'] === 'file';
- };
-
- return array_values(array_filter($contents, $filter));
- }
-}
diff --git a/league/flysystem/src/Plugin/ListPaths.php b/league/flysystem/src/Plugin/ListPaths.php
deleted file mode 100644
index 514bdf0b3..000000000
--- a/league/flysystem/src/Plugin/ListPaths.php
+++ /dev/null
@@ -1,36 +0,0 @@
-filesystem->listContents($directory, $recursive);
-
- foreach ($contents as $object) {
- $result[] = $object['path'];
- }
-
- return $result;
- }
-}
diff --git a/league/flysystem/src/Plugin/ListWith.php b/league/flysystem/src/Plugin/ListWith.php
deleted file mode 100644
index d90464e52..000000000
--- a/league/flysystem/src/Plugin/ListWith.php
+++ /dev/null
@@ -1,60 +0,0 @@
-filesystem->listContents($directory, $recursive);
-
- foreach ($contents as $index => $object) {
- if ($object['type'] === 'file') {
- $missingKeys = array_diff($keys, array_keys($object));
- $contents[$index] = array_reduce($missingKeys, [$this, 'getMetadataByName'], $object);
- }
- }
-
- return $contents;
- }
-
- /**
- * Get a meta-data value by key name.
- *
- * @param array $object
- * @param string $key
- *
- * @return array
- */
- protected function getMetadataByName(array $object, $key)
- {
- $method = 'get' . ucfirst($key);
-
- if ( ! method_exists($this->filesystem, $method)) {
- throw new \InvalidArgumentException('Could not get meta-data for key: ' . $key);
- }
-
- $object[$key] = $this->filesystem->{$method}($object['path']);
-
- return $object;
- }
-}
diff --git a/league/flysystem/src/Plugin/PluggableTrait.php b/league/flysystem/src/Plugin/PluggableTrait.php
deleted file mode 100644
index 922edfe52..000000000
--- a/league/flysystem/src/Plugin/PluggableTrait.php
+++ /dev/null
@@ -1,97 +0,0 @@
-plugins[$plugin->getMethod()] = $plugin;
-
- return $this;
- }
-
- /**
- * Find a specific plugin.
- *
- * @param string $method
- *
- * @throws PluginNotFoundException
- *
- * @return PluginInterface
- */
- protected function findPlugin($method)
- {
- if ( ! isset($this->plugins[$method])) {
- throw new PluginNotFoundException('Plugin not found for method: ' . $method);
- }
-
- return $this->plugins[$method];
- }
-
- /**
- * Invoke a plugin by method name.
- *
- * @param string $method
- * @param array $arguments
- * @param FilesystemInterface $filesystem
- *
- * @throws PluginNotFoundException
- *
- * @return mixed
- */
- protected function invokePlugin($method, array $arguments, FilesystemInterface $filesystem)
- {
- $plugin = $this->findPlugin($method);
- $plugin->setFilesystem($filesystem);
- $callback = [$plugin, 'handle'];
-
- return call_user_func_array($callback, $arguments);
- }
-
- /**
- * Plugins pass-through.
- *
- * @param string $method
- * @param array $arguments
- *
- * @throws BadMethodCallException
- *
- * @return mixed
- */
- public function __call($method, array $arguments)
- {
- try {
- return $this->invokePlugin($method, $arguments, $this);
- } catch (PluginNotFoundException $e) {
- throw new BadMethodCallException(
- 'Call to undefined method '
- . get_class($this)
- . '::' . $method
- );
- }
- }
-}
diff --git a/league/flysystem/src/Plugin/PluginNotFoundException.php b/league/flysystem/src/Plugin/PluginNotFoundException.php
deleted file mode 100644
index fd1d7e7e3..000000000
--- a/league/flysystem/src/Plugin/PluginNotFoundException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-hash = spl_object_hash($this);
- static::$safeStorage[$this->hash] = [];
- }
-
- public function storeSafely($key, $value)
- {
- static::$safeStorage[$this->hash][$key] = $value;
- }
-
- public function retrieveSafely($key)
- {
- if (array_key_exists($key, static::$safeStorage[$this->hash])) {
- return static::$safeStorage[$this->hash][$key];
- }
- }
-
- public function __destruct()
- {
- unset(static::$safeStorage[$this->hash]);
- }
-}
diff --git a/league/flysystem/src/UnreadableFileException.php b/league/flysystem/src/UnreadableFileException.php
deleted file mode 100644
index e66803383..000000000
--- a/league/flysystem/src/UnreadableFileException.php
+++ /dev/null
@@ -1,18 +0,0 @@
-getRealPath()
- )
- );
- }
-}
diff --git a/league/flysystem/src/Util.php b/league/flysystem/src/Util.php
deleted file mode 100644
index 76454a05e..000000000
--- a/league/flysystem/src/Util.php
+++ /dev/null
@@ -1,353 +0,0 @@
- ''];
- }
-
- /**
- * Normalize a dirname return value.
- *
- * @param string $dirname
- *
- * @return string normalized dirname
- */
- public static function normalizeDirname($dirname)
- {
- return $dirname === '.' ? '' : $dirname;
- }
-
- /**
- * Get a normalized dirname from a path.
- *
- * @param string $path
- *
- * @return string dirname
- */
- public static function dirname($path)
- {
- return static::normalizeDirname(dirname($path));
- }
-
- /**
- * Map result arrays.
- *
- * @param array $object
- * @param array $map
- *
- * @return array mapped result
- */
- public static function map(array $object, array $map)
- {
- $result = [];
-
- foreach ($map as $from => $to) {
- if ( ! isset($object[$from])) {
- continue;
- }
-
- $result[$to] = $object[$from];
- }
-
- return $result;
- }
-
- /**
- * Normalize path.
- *
- * @param string $path
- *
- * @throws LogicException
- *
- * @return string
- */
- public static function normalizePath($path)
- {
- return static::normalizeRelativePath($path);
- }
-
- /**
- * Normalize relative directories in a path.
- *
- * @param string $path
- *
- * @throws LogicException
- *
- * @return string
- */
- public static function normalizeRelativePath($path)
- {
- $path = str_replace('\\', '/', $path);
- $path = static::removeFunkyWhiteSpace($path);
-
- $parts = [];
-
- foreach (explode('/', $path) as $part) {
- switch ($part) {
- case '':
- case '.':
- break;
-
- case '..':
- if (empty($parts)) {
- throw new LogicException(
- 'Path is outside of the defined root, path: [' . $path . ']'
- );
- }
- array_pop($parts);
- break;
-
- default:
- $parts[] = $part;
- break;
- }
- }
-
- return implode('/', $parts);
- }
-
- /**
- * Removes unprintable characters and invalid unicode characters.
- *
- * @param string $path
- *
- * @return string $path
- */
- protected static function removeFunkyWhiteSpace($path)
- {
- // We do this check in a loop, since removing invalid unicode characters
- // can lead to new characters being created.
- while (preg_match('#\p{C}+|^\./#u', $path)) {
- $path = preg_replace('#\p{C}+|^\./#u', '', $path);
- }
-
- return $path;
- }
-
- /**
- * Normalize prefix.
- *
- * @param string $prefix
- * @param string $separator
- *
- * @return string normalized path
- */
- public static function normalizePrefix($prefix, $separator)
- {
- return rtrim($prefix, $separator) . $separator;
- }
-
- /**
- * Get content size.
- *
- * @param string $contents
- *
- * @return int content size
- */
- public static function contentSize($contents)
- {
- return defined('MB_OVERLOAD_STRING') ? mb_strlen($contents, '8bit') : strlen($contents);
- }
-
- /**
- * Guess MIME Type based on the path of the file and it's content.
- *
- * @param string $path
- * @param string|resource $content
- *
- * @return string|null MIME Type or NULL if no extension detected
- */
- public static function guessMimeType($path, $content)
- {
- $mimeType = MimeType::detectByContent($content);
-
- if ( ! (empty($mimeType) || in_array($mimeType, ['application/x-empty', 'text/plain', 'text/x-asm']))) {
- return $mimeType;
- }
-
- return MimeType::detectByFilename($path);
- }
-
- /**
- * Emulate directories.
- *
- * @param array $listing
- *
- * @return array listing with emulated directories
- */
- public static function emulateDirectories(array $listing)
- {
- $directories = [];
- $listedDirectories = [];
-
- foreach ($listing as $object) {
- list($directories, $listedDirectories) = static::emulateObjectDirectories($object, $directories, $listedDirectories);
- }
-
- $directories = array_diff(array_unique($directories), array_unique($listedDirectories));
-
- foreach ($directories as $directory) {
- $listing[] = static::pathinfo($directory) + ['type' => 'dir'];
- }
-
- return $listing;
- }
-
- /**
- * Ensure a Config instance.
- *
- * @param null|array|Config $config
- *
- * @return Config config instance
- *
- * @throw LogicException
- */
- public static function ensureConfig($config)
- {
- if ($config === null) {
- return new Config();
- }
-
- if ($config instanceof Config) {
- return $config;
- }
-
- if (is_array($config)) {
- return new Config($config);
- }
-
- throw new LogicException('A config should either be an array or a Flysystem\Config object.');
- }
-
- /**
- * Rewind a stream.
- *
- * @param resource $resource
- */
- public static function rewindStream($resource)
- {
- if (ftell($resource) !== 0 && static::isSeekableStream($resource)) {
- rewind($resource);
- }
- }
-
- public static function isSeekableStream($resource)
- {
- $metadata = stream_get_meta_data($resource);
-
- return $metadata['seekable'];
- }
-
- /**
- * Get the size of a stream.
- *
- * @param resource $resource
- *
- * @return int|null stream size
- */
- public static function getStreamSize($resource)
- {
- $stat = fstat($resource);
-
- if ( ! is_array($stat) || ! isset($stat['size'])) {
- return null;
- }
-
- return $stat['size'];
- }
-
- /**
- * Emulate the directories of a single object.
- *
- * @param array $object
- * @param array $directories
- * @param array $listedDirectories
- *
- * @return array
- */
- protected static function emulateObjectDirectories(array $object, array $directories, array $listedDirectories)
- {
- if ($object['type'] === 'dir') {
- $listedDirectories[] = $object['path'];
- }
-
- if ( ! isset($object['dirname']) || trim($object['dirname']) === '') {
- return [$directories, $listedDirectories];
- }
-
- $parent = $object['dirname'];
-
- while (isset($parent) && trim($parent) !== '' && ! in_array($parent, $directories)) {
- $directories[] = $parent;
- $parent = static::dirname($parent);
- }
-
- if (isset($object['type']) && $object['type'] === 'dir') {
- $listedDirectories[] = $object['path'];
-
- return [$directories, $listedDirectories];
- }
-
- return [$directories, $listedDirectories];
- }
-
- /**
- * Returns the trailing name component of the path.
- *
- * @param string $path
- *
- * @return string
- */
- private static function basename($path)
- {
- $separators = DIRECTORY_SEPARATOR === '/' ? '/' : '\/';
-
- $path = rtrim($path, $separators);
-
- $basename = preg_replace('#.*?([^' . preg_quote($separators, '#') . ']+$)#', '$1', $path);
-
- if (DIRECTORY_SEPARATOR === '/') {
- return $basename;
- }
- // @codeCoverageIgnoreStart
- // Extra Windows path munging. This is tested via AppVeyor, but code
- // coverage is not reported.
-
- // Handle relative paths with drive letters. c:file.txt.
- while (preg_match('#^[a-zA-Z]{1}:[^\\\/]#', $basename)) {
- $basename = substr($basename, 2);
- }
-
- // Remove colon for standalone drive letter names.
- if (preg_match('#^[a-zA-Z]{1}:$#', $basename)) {
- $basename = rtrim($basename, ':');
- }
-
- return $basename;
- // @codeCoverageIgnoreEnd
- }
-}
diff --git a/league/flysystem/src/Util/ContentListingFormatter.php b/league/flysystem/src/Util/ContentListingFormatter.php
deleted file mode 100644
index ae0d3b91d..000000000
--- a/league/flysystem/src/Util/ContentListingFormatter.php
+++ /dev/null
@@ -1,122 +0,0 @@
-directory = rtrim($directory, '/');
- $this->recursive = $recursive;
- $this->caseSensitive = $caseSensitive;
- }
-
- /**
- * Format contents listing.
- *
- * @param array $listing
- *
- * @return array
- */
- public function formatListing(array $listing)
- {
- $listing = array_filter(array_map([$this, 'addPathInfo'], $listing), [$this, 'isEntryOutOfScope']);
-
- return $this->sortListing(array_values($listing));
- }
-
- private function addPathInfo(array $entry)
- {
- return $entry + Util::pathinfo($entry['path']);
- }
-
- /**
- * Determine if the entry is out of scope.
- *
- * @param array $entry
- *
- * @return bool
- */
- private function isEntryOutOfScope(array $entry)
- {
- if (empty($entry['path']) && $entry['path'] !== '0') {
- return false;
- }
-
- if ($this->recursive) {
- return $this->residesInDirectory($entry);
- }
-
- return $this->isDirectChild($entry);
- }
-
- /**
- * Check if the entry resides within the parent directory.
- *
- * @param array $entry
- *
- * @return bool
- */
- private function residesInDirectory(array $entry)
- {
- if ($this->directory === '') {
- return true;
- }
-
- return $this->caseSensitive
- ? strpos($entry['path'], $this->directory . '/') === 0
- : stripos($entry['path'], $this->directory . '/') === 0;
- }
-
- /**
- * Check if the entry is a direct child of the directory.
- *
- * @param array $entry
- *
- * @return bool
- */
- private function isDirectChild(array $entry)
- {
- return $this->caseSensitive
- ? $entry['dirname'] === $this->directory
- : strcasecmp($this->directory, $entry['dirname']) === 0;
- }
-
- /**
- * @param array $listing
- *
- * @return array
- */
- private function sortListing(array $listing)
- {
- usort($listing, function ($a, $b) {
- return strcasecmp($a['path'], $b['path']);
- });
-
- return $listing;
- }
-}
diff --git a/league/flysystem/src/Util/MimeType.php b/league/flysystem/src/Util/MimeType.php
deleted file mode 100644
index 35cba3fb8..000000000
--- a/league/flysystem/src/Util/MimeType.php
+++ /dev/null
@@ -1,80 +0,0 @@
-detectMimeTypeFromBuffer($content);
- }
-
- return 'text/plain';
- }
-
- /**
- * Detects MIME Type based on file extension.
- *
- * @param string $extension
- *
- * @return string MIME Type
- */
- public static function detectByFileExtension($extension)
- {
- return static::detector()->detectMimeTypeFromPath('artificial.' . $extension) ?: 'text/plain';
- }
-
- /**
- * @param string $filename
- *
- * @return string MIME Type
- */
- public static function detectByFilename($filename)
- {
- return static::detector()->detectMimeTypeFromPath($filename) ?: 'text/plain';
- }
-
- /**
- * @return array Map of file extension to MIME Type
- */
- public static function getExtensionToMimeTypeMap()
- {
- return static::$extensionToMimeTypeMap;
- }
-}
diff --git a/league/flysystem/src/Util/StreamHasher.php b/league/flysystem/src/Util/StreamHasher.php
deleted file mode 100644
index 938ec5db7..000000000
--- a/league/flysystem/src/Util/StreamHasher.php
+++ /dev/null
@@ -1,36 +0,0 @@
-algo = $algo;
- }
-
- /**
- * @param resource $resource
- *
- * @return string
- */
- public function hash($resource)
- {
- rewind($resource);
- $context = hash_init($this->algo);
- hash_update_stream($context, $resource);
- fclose($resource);
-
- return hash_final($context);
- }
-}
diff --git a/league/mime-type-detection/LICENSE b/league/mime-type-detection/LICENSE
deleted file mode 100644
index 7c1027d3e..000000000
--- a/league/mime-type-detection/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2013-2020 Frank de Jonge
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/league/mime-type-detection/composer.json b/league/mime-type-detection/composer.json
deleted file mode 100644
index 765b05c2d..000000000
--- a/league/mime-type-detection/composer.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "league/mime-type-detection",
- "description": "Mime-type detection for Flysystem",
- "license": "MIT",
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "scripts": {
- "phpstan": "vendor/bin/phpstan analyse -l 6 src"
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "ext-fileinfo": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.8 || ^9.3",
- "phpstan/phpstan": "^0.12.68",
- "friendsofphp/php-cs-fixer": "^2.18"
- },
- "autoload": {
- "psr-4": {
- "League\\MimeTypeDetection\\": "src"
- }
- },
- "config": {
- "platform": {
- "php": "7.2.0"
- }
- }
-}
diff --git a/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php b/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php
deleted file mode 100644
index fc0424161..000000000
--- a/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php
+++ /dev/null
@@ -1,13 +0,0 @@
-extensions = $extensions ?: new GeneratedExtensionToMimeTypeMap();
- }
-
- public function detectMimeType(string $path, $contents): ?string
- {
- return $this->detectMimeTypeFromPath($path);
- }
-
- public function detectMimeTypeFromPath(string $path): ?string
- {
- $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION));
-
- return $this->extensions->lookupMimeType($extension);
- }
-
- public function detectMimeTypeFromFile(string $path): ?string
- {
- return $this->detectMimeTypeFromPath($path);
- }
-
- public function detectMimeTypeFromBuffer(string $contents): ?string
- {
- return null;
- }
-}
diff --git a/league/mime-type-detection/src/ExtensionToMimeTypeMap.php b/league/mime-type-detection/src/ExtensionToMimeTypeMap.php
deleted file mode 100644
index 1dad7bc1a..000000000
--- a/league/mime-type-detection/src/ExtensionToMimeTypeMap.php
+++ /dev/null
@@ -1,10 +0,0 @@
-finfo = new finfo(FILEINFO_MIME_TYPE, $magicFile);
- $this->extensionMap = $extensionMap ?: new GeneratedExtensionToMimeTypeMap();
- $this->bufferSampleSize = $bufferSampleSize;
- }
-
- public function detectMimeType(string $path, $contents): ?string
- {
- $mimeType = is_string($contents)
- ? (@$this->finfo->buffer($this->takeSample($contents)) ?: null)
- : null;
-
- if ($mimeType !== null && ! in_array($mimeType, self::INCONCLUSIVE_MIME_TYPES)) {
- return $mimeType;
- }
-
- return $this->detectMimeTypeFromPath($path);
- }
-
- public function detectMimeTypeFromPath(string $path): ?string
- {
- $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION));
-
- return $this->extensionMap->lookupMimeType($extension);
- }
-
- public function detectMimeTypeFromFile(string $path): ?string
- {
- return @$this->finfo->file($path) ?: null;
- }
-
- public function detectMimeTypeFromBuffer(string $contents): ?string
- {
- return @$this->finfo->buffer($this->takeSample($contents)) ?: null;
- }
-
- private function takeSample(string $contents): string
- {
- if ($this->bufferSampleSize === null) {
- return $contents;
- }
-
- return (string) substr($contents, 0, $this->bufferSampleSize);
- }
-}
diff --git a/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php b/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php
deleted file mode 100644
index 698e2761f..000000000
--- a/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php
+++ /dev/null
@@ -1,1209 +0,0 @@
- 'application/vnd.1000minds.decision-model+xml',
- '3dml' => 'text/vnd.in3d.3dml',
- '3ds' => 'image/x-3ds',
- '3g2' => 'video/3gpp2',
- '3gp' => 'video/3gp',
- '3gpp' => 'video/3gpp',
- '3mf' => 'model/3mf',
- '7z' => 'application/x-7z-compressed',
- '7zip' => 'application/x-7z-compressed',
- '123' => 'application/vnd.lotus-1-2-3',
- 'aab' => 'application/x-authorware-bin',
- 'aac' => 'audio/x-acc',
- 'aam' => 'application/x-authorware-map',
- 'aas' => 'application/x-authorware-seg',
- 'abw' => 'application/x-abiword',
- 'ac' => 'application/vnd.nokia.n-gage.ac+xml',
- 'ac3' => 'audio/ac3',
- 'acc' => 'application/vnd.americandynamics.acc',
- 'ace' => 'application/x-ace-compressed',
- 'acu' => 'application/vnd.acucobol',
- 'acutc' => 'application/vnd.acucorp',
- 'adp' => 'audio/adpcm',
- 'aep' => 'application/vnd.audiograph',
- 'afm' => 'application/x-font-type1',
- 'afp' => 'application/vnd.ibm.modcap',
- 'ahead' => 'application/vnd.ahead.space',
- 'ai' => 'application/pdf',
- 'aif' => 'audio/x-aiff',
- 'aifc' => 'audio/x-aiff',
- 'aiff' => 'audio/x-aiff',
- 'air' => 'application/vnd.adobe.air-application-installer-package+zip',
- 'ait' => 'application/vnd.dvb.ait',
- 'ami' => 'application/vnd.amiga.ami',
- 'apk' => 'application/vnd.android.package-archive',
- 'apng' => 'image/apng',
- 'appcache' => 'text/cache-manifest',
- 'application' => 'application/x-ms-application',
- 'apr' => 'application/vnd.lotus-approach',
- 'arc' => 'application/x-freearc',
- 'arj' => 'application/x-arj',
- 'asc' => 'application/pgp-signature',
- 'asf' => 'video/x-ms-asf',
- 'asm' => 'text/x-asm',
- 'aso' => 'application/vnd.accpac.simply.aso',
- 'asx' => 'video/x-ms-asf',
- 'atc' => 'application/vnd.acucorp',
- 'atom' => 'application/atom+xml',
- 'atomcat' => 'application/atomcat+xml',
- 'atomdeleted' => 'application/atomdeleted+xml',
- 'atomsvc' => 'application/atomsvc+xml',
- 'atx' => 'application/vnd.antix.game-component',
- 'au' => 'audio/x-au',
- 'avi' => 'video/x-msvideo',
- 'avif' => 'image/avif',
- 'aw' => 'application/applixware',
- 'azf' => 'application/vnd.airzip.filesecure.azf',
- 'azs' => 'application/vnd.airzip.filesecure.azs',
- 'azv' => 'image/vnd.airzip.accelerator.azv',
- 'azw' => 'application/vnd.amazon.ebook',
- 'b16' => 'image/vnd.pco.b16',
- 'bat' => 'application/x-msdownload',
- 'bcpio' => 'application/x-bcpio',
- 'bdf' => 'application/x-font-bdf',
- 'bdm' => 'application/vnd.syncml.dm+wbxml',
- 'bdoc' => 'application/x-bdoc',
- 'bed' => 'application/vnd.realvnc.bed',
- 'bh2' => 'application/vnd.fujitsu.oasysprs',
- 'bin' => 'application/octet-stream',
- 'blb' => 'application/x-blorb',
- 'blorb' => 'application/x-blorb',
- 'bmi' => 'application/vnd.bmi',
- 'bmml' => 'application/vnd.balsamiq.bmml+xml',
- 'bmp' => 'image/bmp',
- 'book' => 'application/vnd.framemaker',
- 'box' => 'application/vnd.previewsystems.box',
- 'boz' => 'application/x-bzip2',
- 'bpk' => 'application/octet-stream',
- 'bpmn' => 'application/octet-stream',
- 'bsp' => 'model/vnd.valve.source.compiled-map',
- 'btif' => 'image/prs.btif',
- 'buffer' => 'application/octet-stream',
- 'bz' => 'application/x-bzip',
- 'bz2' => 'application/x-bzip2',
- 'c' => 'text/x-c',
- 'c4d' => 'application/vnd.clonk.c4group',
- 'c4f' => 'application/vnd.clonk.c4group',
- 'c4g' => 'application/vnd.clonk.c4group',
- 'c4p' => 'application/vnd.clonk.c4group',
- 'c4u' => 'application/vnd.clonk.c4group',
- 'c11amc' => 'application/vnd.cluetrust.cartomobile-config',
- 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg',
- 'cab' => 'application/vnd.ms-cab-compressed',
- 'caf' => 'audio/x-caf',
- 'cap' => 'application/vnd.tcpdump.pcap',
- 'car' => 'application/vnd.curl.car',
- 'cat' => 'application/vnd.ms-pki.seccat',
- 'cb7' => 'application/x-cbr',
- 'cba' => 'application/x-cbr',
- 'cbr' => 'application/x-cbr',
- 'cbt' => 'application/x-cbr',
- 'cbz' => 'application/x-cbr',
- 'cc' => 'text/x-c',
- 'cco' => 'application/x-cocoa',
- 'cct' => 'application/x-director',
- 'ccxml' => 'application/ccxml+xml',
- 'cdbcmsg' => 'application/vnd.contact.cmsg',
- 'cdf' => 'application/x-netcdf',
- 'cdfx' => 'application/cdfx+xml',
- 'cdkey' => 'application/vnd.mediastation.cdkey',
- 'cdmia' => 'application/cdmi-capability',
- 'cdmic' => 'application/cdmi-container',
- 'cdmid' => 'application/cdmi-domain',
- 'cdmio' => 'application/cdmi-object',
- 'cdmiq' => 'application/cdmi-queue',
- 'cdr' => 'application/cdr',
- 'cdx' => 'chemical/x-cdx',
- 'cdxml' => 'application/vnd.chemdraw+xml',
- 'cdy' => 'application/vnd.cinderella',
- 'cer' => 'application/pkix-cert',
- 'cfs' => 'application/x-cfs-compressed',
- 'cgm' => 'image/cgm',
- 'chat' => 'application/x-chat',
- 'chm' => 'application/vnd.ms-htmlhelp',
- 'chrt' => 'application/vnd.kde.kchart',
- 'cif' => 'chemical/x-cif',
- 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',
- 'cil' => 'application/vnd.ms-artgalry',
- 'cjs' => 'application/node',
- 'cla' => 'application/vnd.claymore',
- 'class' => 'application/octet-stream',
- 'clkk' => 'application/vnd.crick.clicker.keyboard',
- 'clkp' => 'application/vnd.crick.clicker.palette',
- 'clkt' => 'application/vnd.crick.clicker.template',
- 'clkw' => 'application/vnd.crick.clicker.wordbank',
- 'clkx' => 'application/vnd.crick.clicker',
- 'clp' => 'application/x-msclip',
- 'cmc' => 'application/vnd.cosmocaller',
- 'cmdf' => 'chemical/x-cmdf',
- 'cml' => 'chemical/x-cml',
- 'cmp' => 'application/vnd.yellowriver-custom-menu',
- 'cmx' => 'image/x-cmx',
- 'cod' => 'application/vnd.rim.cod',
- 'coffee' => 'text/coffeescript',
- 'com' => 'application/x-msdownload',
- 'conf' => 'text/plain',
- 'cpio' => 'application/x-cpio',
- 'cpp' => 'text/x-c',
- 'cpt' => 'application/mac-compactpro',
- 'crd' => 'application/x-mscardfile',
- 'crl' => 'application/pkix-crl',
- 'crt' => 'application/x-x509-ca-cert',
- 'crx' => 'application/x-chrome-extension',
- 'cryptonote' => 'application/vnd.rig.cryptonote',
- 'csh' => 'application/x-csh',
- 'csl' => 'application/vnd.citationstyles.style+xml',
- 'csml' => 'chemical/x-csml',
- 'csp' => 'application/vnd.commonspace',
- 'csr' => 'application/octet-stream',
- 'css' => 'text/css',
- 'cst' => 'application/x-director',
- 'csv' => 'text/csv',
- 'cu' => 'application/cu-seeme',
- 'curl' => 'text/vnd.curl',
- 'cww' => 'application/prs.cww',
- 'cxt' => 'application/x-director',
- 'cxx' => 'text/x-c',
- 'dae' => 'model/vnd.collada+xml',
- 'daf' => 'application/vnd.mobius.daf',
- 'dart' => 'application/vnd.dart',
- 'dataless' => 'application/vnd.fdsn.seed',
- 'davmount' => 'application/davmount+xml',
- 'dbf' => 'application/vnd.dbf',
- 'dbk' => 'application/docbook+xml',
- 'dcr' => 'application/x-director',
- 'dcurl' => 'text/vnd.curl.dcurl',
- 'dd2' => 'application/vnd.oma.dd2+xml',
- 'ddd' => 'application/vnd.fujixerox.ddd',
- 'ddf' => 'application/vnd.syncml.dmddf+xml',
- 'dds' => 'image/vnd.ms-dds',
- 'deb' => 'application/x-debian-package',
- 'def' => 'text/plain',
- 'deploy' => 'application/octet-stream',
- 'der' => 'application/x-x509-ca-cert',
- 'dfac' => 'application/vnd.dreamfactory',
- 'dgc' => 'application/x-dgc-compressed',
- 'dic' => 'text/x-c',
- 'dir' => 'application/x-director',
- 'dis' => 'application/vnd.mobius.dis',
- 'disposition-notification' => 'message/disposition-notification',
- 'dist' => 'application/octet-stream',
- 'distz' => 'application/octet-stream',
- 'djv' => 'image/vnd.djvu',
- 'djvu' => 'image/vnd.djvu',
- 'dll' => 'application/octet-stream',
- 'dmg' => 'application/x-apple-diskimage',
- 'dmn' => 'application/octet-stream',
- 'dmp' => 'application/vnd.tcpdump.pcap',
- 'dms' => 'application/octet-stream',
- 'dna' => 'application/vnd.dna',
- 'doc' => 'application/msword',
- 'docm' => 'application/vnd.ms-word.template.macroEnabled.12',
- 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
- 'dot' => 'application/msword',
- 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
- 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
- 'dp' => 'application/vnd.osgi.dp',
- 'dpg' => 'application/vnd.dpgraph',
- 'dra' => 'audio/vnd.dra',
- 'drle' => 'image/dicom-rle',
- 'dsc' => 'text/prs.lines.tag',
- 'dssc' => 'application/dssc+der',
- 'dtb' => 'application/x-dtbook+xml',
- 'dtd' => 'application/xml-dtd',
- 'dts' => 'audio/vnd.dts',
- 'dtshd' => 'audio/vnd.dts.hd',
- 'dump' => 'application/octet-stream',
- 'dvb' => 'video/vnd.dvb.file',
- 'dvi' => 'application/x-dvi',
- 'dwd' => 'application/atsc-dwd+xml',
- 'dwf' => 'model/vnd.dwf',
- 'dwg' => 'image/vnd.dwg',
- 'dxf' => 'image/vnd.dxf',
- 'dxp' => 'application/vnd.spotfire.dxp',
- 'dxr' => 'application/x-director',
- 'ear' => 'application/java-archive',
- 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',
- 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',
- 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',
- 'ecma' => 'application/ecmascript',
- 'edm' => 'application/vnd.novadigm.edm',
- 'edx' => 'application/vnd.novadigm.edx',
- 'efif' => 'application/vnd.picsel',
- 'ei6' => 'application/vnd.pg.osasli',
- 'elc' => 'application/octet-stream',
- 'emf' => 'image/emf',
- 'eml' => 'message/rfc822',
- 'emma' => 'application/emma+xml',
- 'emotionml' => 'application/emotionml+xml',
- 'emz' => 'application/x-msmetafile',
- 'eol' => 'audio/vnd.digital-winds',
- 'eot' => 'application/vnd.ms-fontobject',
- 'eps' => 'application/postscript',
- 'epub' => 'application/epub+zip',
- 'es' => 'application/ecmascript',
- 'es3' => 'application/vnd.eszigno3+xml',
- 'esa' => 'application/vnd.osgi.subsystem',
- 'esf' => 'application/vnd.epson.esf',
- 'et3' => 'application/vnd.eszigno3+xml',
- 'etx' => 'text/x-setext',
- 'eva' => 'application/x-eva',
- 'evy' => 'application/x-envoy',
- 'exe' => 'application/octet-stream',
- 'exi' => 'application/exi',
- 'exr' => 'image/aces',
- 'ext' => 'application/vnd.novadigm.ext',
- 'ez' => 'application/andrew-inset',
- 'ez2' => 'application/vnd.ezpix-album',
- 'ez3' => 'application/vnd.ezpix-package',
- 'f' => 'text/x-fortran',
- 'f4v' => 'video/mp4',
- 'f77' => 'text/x-fortran',
- 'f90' => 'text/x-fortran',
- 'fbs' => 'image/vnd.fastbidsheet',
- 'fcdt' => 'application/vnd.adobe.formscentral.fcdt',
- 'fcs' => 'application/vnd.isac.fcs',
- 'fdf' => 'application/vnd.fdf',
- 'fdt' => 'application/fdt+xml',
- 'fe_launch' => 'application/vnd.denovo.fcselayout-link',
- 'fg5' => 'application/vnd.fujitsu.oasysgp',
- 'fgd' => 'application/x-director',
- 'fh' => 'image/x-freehand',
- 'fh4' => 'image/x-freehand',
- 'fh5' => 'image/x-freehand',
- 'fh7' => 'image/x-freehand',
- 'fhc' => 'image/x-freehand',
- 'fig' => 'application/x-xfig',
- 'fits' => 'image/fits',
- 'flac' => 'audio/x-flac',
- 'fli' => 'video/x-fli',
- 'flo' => 'application/vnd.micrografx.flo',
- 'flv' => 'video/x-flv',
- 'flw' => 'application/vnd.kde.kivio',
- 'flx' => 'text/vnd.fmi.flexstor',
- 'fly' => 'text/vnd.fly',
- 'fm' => 'application/vnd.framemaker',
- 'fnc' => 'application/vnd.frogans.fnc',
- 'fo' => 'application/vnd.software602.filler.form+xml',
- 'for' => 'text/x-fortran',
- 'fpx' => 'image/vnd.fpx',
- 'frame' => 'application/vnd.framemaker',
- 'fsc' => 'application/vnd.fsc.weblaunch',
- 'fst' => 'image/vnd.fst',
- 'ftc' => 'application/vnd.fluxtime.clip',
- 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',
- 'fvt' => 'video/vnd.fvt',
- 'fxp' => 'application/vnd.adobe.fxp',
- 'fxpl' => 'application/vnd.adobe.fxp',
- 'fzs' => 'application/vnd.fuzzysheet',
- 'g2w' => 'application/vnd.geoplan',
- 'g3' => 'image/g3fax',
- 'g3w' => 'application/vnd.geospace',
- 'gac' => 'application/vnd.groove-account',
- 'gam' => 'application/x-tads',
- 'gbr' => 'application/rpki-ghostbusters',
- 'gca' => 'application/x-gca-compressed',
- 'gdl' => 'model/vnd.gdl',
- 'gdoc' => 'application/vnd.google-apps.document',
- 'geo' => 'application/vnd.dynageo',
- 'geojson' => 'application/geo+json',
- 'gex' => 'application/vnd.geometry-explorer',
- 'ggb' => 'application/vnd.geogebra.file',
- 'ggt' => 'application/vnd.geogebra.tool',
- 'ghf' => 'application/vnd.groove-help',
- 'gif' => 'image/gif',
- 'gim' => 'application/vnd.groove-identity-message',
- 'glb' => 'model/gltf-binary',
- 'gltf' => 'model/gltf+json',
- 'gml' => 'application/gml+xml',
- 'gmx' => 'application/vnd.gmx',
- 'gnumeric' => 'application/x-gnumeric',
- 'gpg' => 'application/gpg-keys',
- 'gph' => 'application/vnd.flographit',
- 'gpx' => 'application/gpx+xml',
- 'gqf' => 'application/vnd.grafeq',
- 'gqs' => 'application/vnd.grafeq',
- 'gram' => 'application/srgs',
- 'gramps' => 'application/x-gramps-xml',
- 'gre' => 'application/vnd.geometry-explorer',
- 'grv' => 'application/vnd.groove-injector',
- 'grxml' => 'application/srgs+xml',
- 'gsf' => 'application/x-font-ghostscript',
- 'gsheet' => 'application/vnd.google-apps.spreadsheet',
- 'gslides' => 'application/vnd.google-apps.presentation',
- 'gtar' => 'application/x-gtar',
- 'gtm' => 'application/vnd.groove-tool-message',
- 'gtw' => 'model/vnd.gtw',
- 'gv' => 'text/vnd.graphviz',
- 'gxf' => 'application/gxf',
- 'gxt' => 'application/vnd.geonext',
- 'gz' => 'application/x-gzip',
- 'gzip' => 'application/x-gzip',
- 'h' => 'text/x-c',
- 'h261' => 'video/h261',
- 'h263' => 'video/h263',
- 'h264' => 'video/h264',
- 'hal' => 'application/vnd.hal+xml',
- 'hbci' => 'application/vnd.hbci',
- 'hbs' => 'text/x-handlebars-template',
- 'hdd' => 'application/x-virtualbox-hdd',
- 'hdf' => 'application/x-hdf',
- 'heic' => 'image/heic',
- 'heics' => 'image/heic-sequence',
- 'heif' => 'image/heif',
- 'heifs' => 'image/heif-sequence',
- 'hej2' => 'image/hej2k',
- 'held' => 'application/atsc-held+xml',
- 'hh' => 'text/x-c',
- 'hjson' => 'application/hjson',
- 'hlp' => 'application/winhlp',
- 'hpgl' => 'application/vnd.hp-hpgl',
- 'hpid' => 'application/vnd.hp-hpid',
- 'hps' => 'application/vnd.hp-hps',
- 'hqx' => 'application/mac-binhex40',
- 'hsj2' => 'image/hsj2',
- 'htc' => 'text/x-component',
- 'htke' => 'application/vnd.kenameaapp',
- 'htm' => 'text/html',
- 'html' => 'text/html',
- 'hvd' => 'application/vnd.yamaha.hv-dic',
- 'hvp' => 'application/vnd.yamaha.hv-voice',
- 'hvs' => 'application/vnd.yamaha.hv-script',
- 'i2g' => 'application/vnd.intergeo',
- 'icc' => 'application/vnd.iccprofile',
- 'ice' => 'x-conference/x-cooltalk',
- 'icm' => 'application/vnd.iccprofile',
- 'ico' => 'image/x-icon',
- 'ics' => 'text/calendar',
- 'ief' => 'image/ief',
- 'ifb' => 'text/calendar',
- 'ifm' => 'application/vnd.shana.informed.formdata',
- 'iges' => 'model/iges',
- 'igl' => 'application/vnd.igloader',
- 'igm' => 'application/vnd.insors.igm',
- 'igs' => 'model/iges',
- 'igx' => 'application/vnd.micrografx.igx',
- 'iif' => 'application/vnd.shana.informed.interchange',
- 'img' => 'application/octet-stream',
- 'imp' => 'application/vnd.accpac.simply.imp',
- 'ims' => 'application/vnd.ms-ims',
- 'in' => 'text/plain',
- 'ini' => 'text/plain',
- 'ink' => 'application/inkml+xml',
- 'inkml' => 'application/inkml+xml',
- 'install' => 'application/x-install-instructions',
- 'iota' => 'application/vnd.astraea-software.iota',
- 'ipfix' => 'application/ipfix',
- 'ipk' => 'application/vnd.shana.informed.package',
- 'irm' => 'application/vnd.ibm.rights-management',
- 'irp' => 'application/vnd.irepository.package+xml',
- 'iso' => 'application/x-iso9660-image',
- 'itp' => 'application/vnd.shana.informed.formtemplate',
- 'its' => 'application/its+xml',
- 'ivp' => 'application/vnd.immervision-ivp',
- 'ivu' => 'application/vnd.immervision-ivu',
- 'jad' => 'text/vnd.sun.j2me.app-descriptor',
- 'jade' => 'text/jade',
- 'jam' => 'application/vnd.jam',
- 'jar' => 'application/java-archive',
- 'jardiff' => 'application/x-java-archive-diff',
- 'java' => 'text/x-java-source',
- 'jhc' => 'image/jphc',
- 'jisp' => 'application/vnd.jisp',
- 'jls' => 'image/jls',
- 'jlt' => 'application/vnd.hp-jlyt',
- 'jng' => 'image/x-jng',
- 'jnlp' => 'application/x-java-jnlp-file',
- 'joda' => 'application/vnd.joost.joda-archive',
- 'jp2' => 'image/jp2',
- 'jpe' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'jpf' => 'image/jpx',
- 'jpg' => 'image/jpeg',
- 'jpg2' => 'image/jp2',
- 'jpgm' => 'video/jpm',
- 'jpgv' => 'video/jpeg',
- 'jph' => 'image/jph',
- 'jpm' => 'video/jpm',
- 'jpx' => 'image/jpx',
- 'js' => 'application/javascript',
- 'json' => 'application/json',
- 'json5' => 'application/json5',
- 'jsonld' => 'application/ld+json',
- 'jsonml' => 'application/jsonml+json',
- 'jsx' => 'text/jsx',
- 'jxr' => 'image/jxr',
- 'jxra' => 'image/jxra',
- 'jxrs' => 'image/jxrs',
- 'jxs' => 'image/jxs',
- 'jxsc' => 'image/jxsc',
- 'jxsi' => 'image/jxsi',
- 'jxss' => 'image/jxss',
- 'kar' => 'audio/midi',
- 'karbon' => 'application/vnd.kde.karbon',
- 'kdb' => 'application/octet-stream',
- 'kdbx' => 'application/x-keepass2',
- 'key' => 'application/vnd.apple.keynote',
- 'kfo' => 'application/vnd.kde.kformula',
- 'kia' => 'application/vnd.kidspiration',
- 'kml' => 'application/vnd.google-earth.kml+xml',
- 'kmz' => 'application/vnd.google-earth.kmz',
- 'kne' => 'application/vnd.kinar',
- 'knp' => 'application/vnd.kinar',
- 'kon' => 'application/vnd.kde.kontour',
- 'kpr' => 'application/vnd.kde.kpresenter',
- 'kpt' => 'application/vnd.kde.kpresenter',
- 'kpxx' => 'application/vnd.ds-keypoint',
- 'ksp' => 'application/vnd.kde.kspread',
- 'ktr' => 'application/vnd.kahootz',
- 'ktx' => 'image/ktx',
- 'ktx2' => 'image/ktx2',
- 'ktz' => 'application/vnd.kahootz',
- 'kwd' => 'application/vnd.kde.kword',
- 'kwt' => 'application/vnd.kde.kword',
- 'lasxml' => 'application/vnd.las.las+xml',
- 'latex' => 'application/x-latex',
- 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',
- 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',
- 'les' => 'application/vnd.hhe.lesson-player',
- 'less' => 'text/less',
- 'lgr' => 'application/lgr+xml',
- 'lha' => 'application/octet-stream',
- 'link66' => 'application/vnd.route66.link66+xml',
- 'list' => 'text/plain',
- 'list3820' => 'application/vnd.ibm.modcap',
- 'listafp' => 'application/vnd.ibm.modcap',
- 'litcoffee' => 'text/coffeescript',
- 'lnk' => 'application/x-ms-shortcut',
- 'log' => 'text/plain',
- 'lostxml' => 'application/lost+xml',
- 'lrf' => 'application/octet-stream',
- 'lrm' => 'application/vnd.ms-lrm',
- 'ltf' => 'application/vnd.frogans.ltf',
- 'lua' => 'text/x-lua',
- 'luac' => 'application/x-lua-bytecode',
- 'lvp' => 'audio/vnd.lucent.voice',
- 'lwp' => 'application/vnd.lotus-wordpro',
- 'lzh' => 'application/octet-stream',
- 'm1v' => 'video/mpeg',
- 'm2a' => 'audio/mpeg',
- 'm2v' => 'video/mpeg',
- 'm3a' => 'audio/mpeg',
- 'm3u' => 'text/plain',
- 'm3u8' => 'application/vnd.apple.mpegurl',
- 'm4a' => 'audio/x-m4a',
- 'm4p' => 'application/mp4',
- 'm4u' => 'application/vnd.mpegurl',
- 'm4v' => 'video/x-m4v',
- 'm13' => 'application/x-msmediaview',
- 'm14' => 'application/x-msmediaview',
- 'm21' => 'application/mp21',
- 'ma' => 'application/mathematica',
- 'mads' => 'application/mads+xml',
- 'maei' => 'application/mmt-aei+xml',
- 'mag' => 'application/vnd.ecowin.chart',
- 'maker' => 'application/vnd.framemaker',
- 'man' => 'text/troff',
- 'manifest' => 'text/cache-manifest',
- 'map' => 'application/json',
- 'mar' => 'application/octet-stream',
- 'markdown' => 'text/markdown',
- 'mathml' => 'application/mathml+xml',
- 'mb' => 'application/mathematica',
- 'mbk' => 'application/vnd.mobius.mbk',
- 'mbox' => 'application/mbox',
- 'mc1' => 'application/vnd.medcalcdata',
- 'mcd' => 'application/vnd.mcd',
- 'mcurl' => 'text/vnd.curl.mcurl',
- 'md' => 'text/markdown',
- 'mdb' => 'application/x-msaccess',
- 'mdi' => 'image/vnd.ms-modi',
- 'mdx' => 'text/mdx',
- 'me' => 'text/troff',
- 'mesh' => 'model/mesh',
- 'meta4' => 'application/metalink4+xml',
- 'metalink' => 'application/metalink+xml',
- 'mets' => 'application/mets+xml',
- 'mfm' => 'application/vnd.mfmp',
- 'mft' => 'application/rpki-manifest',
- 'mgp' => 'application/vnd.osgeo.mapguide.package',
- 'mgz' => 'application/vnd.proteus.magazine',
- 'mid' => 'audio/midi',
- 'midi' => 'audio/midi',
- 'mie' => 'application/x-mie',
- 'mif' => 'application/vnd.mif',
- 'mime' => 'message/rfc822',
- 'mj2' => 'video/mj2',
- 'mjp2' => 'video/mj2',
- 'mjs' => 'application/javascript',
- 'mk3d' => 'video/x-matroska',
- 'mka' => 'audio/x-matroska',
- 'mkd' => 'text/x-markdown',
- 'mks' => 'video/x-matroska',
- 'mkv' => 'video/x-matroska',
- 'mlp' => 'application/vnd.dolby.mlp',
- 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',
- 'mmf' => 'application/vnd.smaf',
- 'mml' => 'text/mathml',
- 'mmr' => 'image/vnd.fujixerox.edmics-mmr',
- 'mng' => 'video/x-mng',
- 'mny' => 'application/x-msmoney',
- 'mobi' => 'application/x-mobipocket-ebook',
- 'mods' => 'application/mods+xml',
- 'mov' => 'video/quicktime',
- 'movie' => 'video/x-sgi-movie',
- 'mp2' => 'audio/mpeg',
- 'mp2a' => 'audio/mpeg',
- 'mp3' => 'audio/mpeg',
- 'mp4' => 'video/mp4',
- 'mp4a' => 'audio/mp4',
- 'mp4s' => 'application/mp4',
- 'mp4v' => 'video/mp4',
- 'mp21' => 'application/mp21',
- 'mpc' => 'application/vnd.mophun.certificate',
- 'mpd' => 'application/dash+xml',
- 'mpe' => 'video/mpeg',
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpg4' => 'video/mp4',
- 'mpga' => 'audio/mpeg',
- 'mpkg' => 'application/vnd.apple.installer+xml',
- 'mpm' => 'application/vnd.blueice.multipass',
- 'mpn' => 'application/vnd.mophun.application',
- 'mpp' => 'application/vnd.ms-project',
- 'mpt' => 'application/vnd.ms-project',
- 'mpy' => 'application/vnd.ibm.minipay',
- 'mqy' => 'application/vnd.mobius.mqy',
- 'mrc' => 'application/marc',
- 'mrcx' => 'application/marcxml+xml',
- 'ms' => 'text/troff',
- 'mscml' => 'application/mediaservercontrol+xml',
- 'mseed' => 'application/vnd.fdsn.mseed',
- 'mseq' => 'application/vnd.mseq',
- 'msf' => 'application/vnd.epson.msf',
- 'msg' => 'application/vnd.ms-outlook',
- 'msh' => 'model/mesh',
- 'msi' => 'application/x-msdownload',
- 'msl' => 'application/vnd.mobius.msl',
- 'msm' => 'application/octet-stream',
- 'msp' => 'application/octet-stream',
- 'msty' => 'application/vnd.muvee.style',
- 'mtl' => 'model/mtl',
- 'mts' => 'model/vnd.mts',
- 'mus' => 'application/vnd.musician',
- 'musd' => 'application/mmt-usd+xml',
- 'musicxml' => 'application/vnd.recordare.musicxml+xml',
- 'mvb' => 'application/x-msmediaview',
- 'mwf' => 'application/vnd.mfer',
- 'mxf' => 'application/mxf',
- 'mxl' => 'application/vnd.recordare.musicxml',
- 'mxmf' => 'audio/mobile-xmf',
- 'mxml' => 'application/xv+xml',
- 'mxs' => 'application/vnd.triscape.mxs',
- 'mxu' => 'video/vnd.mpegurl',
- 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',
- 'n3' => 'text/n3',
- 'nb' => 'application/mathematica',
- 'nbp' => 'application/vnd.wolfram.player',
- 'nc' => 'application/x-netcdf',
- 'ncx' => 'application/x-dtbncx+xml',
- 'nfo' => 'text/x-nfo',
- 'ngdat' => 'application/vnd.nokia.n-gage.data',
- 'nitf' => 'application/vnd.nitf',
- 'nlu' => 'application/vnd.neurolanguage.nlu',
- 'nml' => 'application/vnd.enliven',
- 'nnd' => 'application/vnd.noblenet-directory',
- 'nns' => 'application/vnd.noblenet-sealer',
- 'nnw' => 'application/vnd.noblenet-web',
- 'npx' => 'image/vnd.net-fpx',
- 'nq' => 'application/n-quads',
- 'nsc' => 'application/x-conference',
- 'nsf' => 'application/vnd.lotus-notes',
- 'nt' => 'application/n-triples',
- 'ntf' => 'application/vnd.nitf',
- 'numbers' => 'application/vnd.apple.numbers',
- 'nzb' => 'application/x-nzb',
- 'oa2' => 'application/vnd.fujitsu.oasys2',
- 'oa3' => 'application/vnd.fujitsu.oasys3',
- 'oas' => 'application/vnd.fujitsu.oasys',
- 'obd' => 'application/x-msbinder',
- 'obgx' => 'application/vnd.openblox.game+xml',
- 'obj' => 'model/obj',
- 'oda' => 'application/oda',
- 'odb' => 'application/vnd.oasis.opendocument.database',
- 'odc' => 'application/vnd.oasis.opendocument.chart',
- 'odf' => 'application/vnd.oasis.opendocument.formula',
- 'odft' => 'application/vnd.oasis.opendocument.formula-template',
- 'odg' => 'application/vnd.oasis.opendocument.graphics',
- 'odi' => 'application/vnd.oasis.opendocument.image',
- 'odm' => 'application/vnd.oasis.opendocument.text-master',
- 'odp' => 'application/vnd.oasis.opendocument.presentation',
- 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
- 'odt' => 'application/vnd.oasis.opendocument.text',
- 'oga' => 'audio/ogg',
- 'ogex' => 'model/vnd.opengex',
- 'ogg' => 'audio/ogg',
- 'ogv' => 'video/ogg',
- 'ogx' => 'application/ogg',
- 'omdoc' => 'application/omdoc+xml',
- 'onepkg' => 'application/onenote',
- 'onetmp' => 'application/onenote',
- 'onetoc' => 'application/onenote',
- 'onetoc2' => 'application/onenote',
- 'opf' => 'application/oebps-package+xml',
- 'opml' => 'text/x-opml',
- 'oprc' => 'application/vnd.palm',
- 'opus' => 'audio/ogg',
- 'org' => 'text/x-org',
- 'osf' => 'application/vnd.yamaha.openscoreformat',
- 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
- 'osm' => 'application/vnd.openstreetmap.data+xml',
- 'otc' => 'application/vnd.oasis.opendocument.chart-template',
- 'otf' => 'font/otf',
- 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
- 'oth' => 'application/vnd.oasis.opendocument.text-web',
- 'oti' => 'application/vnd.oasis.opendocument.image-template',
- 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
- 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
- 'ott' => 'application/vnd.oasis.opendocument.text-template',
- 'ova' => 'application/x-virtualbox-ova',
- 'ovf' => 'application/x-virtualbox-ovf',
- 'owl' => 'application/rdf+xml',
- 'oxps' => 'application/oxps',
- 'oxt' => 'application/vnd.openofficeorg.extension',
- 'p' => 'text/x-pascal',
- 'p7a' => 'application/x-pkcs7-signature',
- 'p7b' => 'application/x-pkcs7-certificates',
- 'p7c' => 'application/pkcs7-mime',
- 'p7m' => 'application/pkcs7-mime',
- 'p7r' => 'application/x-pkcs7-certreqresp',
- 'p7s' => 'application/pkcs7-signature',
- 'p8' => 'application/pkcs8',
- 'p10' => 'application/x-pkcs10',
- 'p12' => 'application/x-pkcs12',
- 'pac' => 'application/x-ns-proxy-autoconfig',
- 'pages' => 'application/vnd.apple.pages',
- 'pas' => 'text/x-pascal',
- 'paw' => 'application/vnd.pawaafile',
- 'pbd' => 'application/vnd.powerbuilder6',
- 'pbm' => 'image/x-portable-bitmap',
- 'pcap' => 'application/vnd.tcpdump.pcap',
- 'pcf' => 'application/x-font-pcf',
- 'pcl' => 'application/vnd.hp-pcl',
- 'pclxl' => 'application/vnd.hp-pclxl',
- 'pct' => 'image/x-pict',
- 'pcurl' => 'application/vnd.curl.pcurl',
- 'pcx' => 'image/x-pcx',
- 'pdb' => 'application/x-pilot',
- 'pde' => 'text/x-processing',
- 'pdf' => 'application/pdf',
- 'pem' => 'application/x-x509-user-cert',
- 'pfa' => 'application/x-font-type1',
- 'pfb' => 'application/x-font-type1',
- 'pfm' => 'application/x-font-type1',
- 'pfr' => 'application/font-tdpfr',
- 'pfx' => 'application/x-pkcs12',
- 'pgm' => 'image/x-portable-graymap',
- 'pgn' => 'application/x-chess-pgn',
- 'pgp' => 'application/pgp',
- 'php' => 'application/x-httpd-php',
- 'php3' => 'application/x-httpd-php',
- 'php4' => 'application/x-httpd-php',
- 'phps' => 'application/x-httpd-php-source',
- 'phtml' => 'application/x-httpd-php',
- 'pic' => 'image/x-pict',
- 'pkg' => 'application/octet-stream',
- 'pki' => 'application/pkixcmp',
- 'pkipath' => 'application/pkix-pkipath',
- 'pkpass' => 'application/vnd.apple.pkpass',
- 'pl' => 'application/x-perl',
- 'plb' => 'application/vnd.3gpp.pic-bw-large',
- 'plc' => 'application/vnd.mobius.plc',
- 'plf' => 'application/vnd.pocketlearn',
- 'pls' => 'application/pls+xml',
- 'pm' => 'application/x-perl',
- 'pml' => 'application/vnd.ctc-posml',
- 'png' => 'image/png',
- 'pnm' => 'image/x-portable-anymap',
- 'portpkg' => 'application/vnd.macports.portpkg',
- 'pot' => 'application/vnd.ms-powerpoint',
- 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
- 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
- 'ppa' => 'application/vnd.ms-powerpoint',
- 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
- 'ppd' => 'application/vnd.cups-ppd',
- 'ppm' => 'image/x-portable-pixmap',
- 'pps' => 'application/vnd.ms-powerpoint',
- 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
- 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
- 'ppt' => 'application/powerpoint',
- 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
- 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
- 'pqa' => 'application/vnd.palm',
- 'prc' => 'application/x-pilot',
- 'pre' => 'application/vnd.lotus-freelance',
- 'prf' => 'application/pics-rules',
- 'provx' => 'application/provenance+xml',
- 'ps' => 'application/postscript',
- 'psb' => 'application/vnd.3gpp.pic-bw-small',
- 'psd' => 'application/x-photoshop',
- 'psf' => 'application/x-font-linux-psf',
- 'pskcxml' => 'application/pskc+xml',
- 'pti' => 'image/prs.pti',
- 'ptid' => 'application/vnd.pvi.ptid1',
- 'pub' => 'application/x-mspublisher',
- 'pvb' => 'application/vnd.3gpp.pic-bw-var',
- 'pwn' => 'application/vnd.3m.post-it-notes',
- 'pya' => 'audio/vnd.ms-playready.media.pya',
- 'pyv' => 'video/vnd.ms-playready.media.pyv',
- 'qam' => 'application/vnd.epson.quickanime',
- 'qbo' => 'application/vnd.intu.qbo',
- 'qfx' => 'application/vnd.intu.qfx',
- 'qps' => 'application/vnd.publishare-delta-tree',
- 'qt' => 'video/quicktime',
- 'qwd' => 'application/vnd.quark.quarkxpress',
- 'qwt' => 'application/vnd.quark.quarkxpress',
- 'qxb' => 'application/vnd.quark.quarkxpress',
- 'qxd' => 'application/vnd.quark.quarkxpress',
- 'qxl' => 'application/vnd.quark.quarkxpress',
- 'qxt' => 'application/vnd.quark.quarkxpress',
- 'ra' => 'audio/x-realaudio',
- 'ram' => 'audio/x-pn-realaudio',
- 'raml' => 'application/raml+yaml',
- 'rapd' => 'application/route-apd+xml',
- 'rar' => 'application/x-rar',
- 'ras' => 'image/x-cmu-raster',
- 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',
- 'rdf' => 'application/rdf+xml',
- 'rdz' => 'application/vnd.data-vision.rdz',
- 'relo' => 'application/p2p-overlay+xml',
- 'rep' => 'application/vnd.businessobjects',
- 'res' => 'application/x-dtbresource+xml',
- 'rgb' => 'image/x-rgb',
- 'rif' => 'application/reginfo+xml',
- 'rip' => 'audio/vnd.rip',
- 'ris' => 'application/x-research-info-systems',
- 'rl' => 'application/resource-lists+xml',
- 'rlc' => 'image/vnd.fujixerox.edmics-rlc',
- 'rld' => 'application/resource-lists-diff+xml',
- 'rm' => 'audio/x-pn-realaudio',
- 'rmi' => 'audio/midi',
- 'rmp' => 'audio/x-pn-realaudio-plugin',
- 'rms' => 'application/vnd.jcp.javame.midlet-rms',
- 'rmvb' => 'application/vnd.rn-realmedia-vbr',
- 'rnc' => 'application/relax-ng-compact-syntax',
- 'rng' => 'application/xml',
- 'roa' => 'application/rpki-roa',
- 'roff' => 'text/troff',
- 'rp9' => 'application/vnd.cloanto.rp9',
- 'rpm' => 'audio/x-pn-realaudio-plugin',
- 'rpss' => 'application/vnd.nokia.radio-presets',
- 'rpst' => 'application/vnd.nokia.radio-preset',
- 'rq' => 'application/sparql-query',
- 'rs' => 'application/rls-services+xml',
- 'rsa' => 'application/x-pkcs7',
- 'rsat' => 'application/atsc-rsat+xml',
- 'rsd' => 'application/rsd+xml',
- 'rsheet' => 'application/urc-ressheet+xml',
- 'rss' => 'application/rss+xml',
- 'rtf' => 'text/rtf',
- 'rtx' => 'text/richtext',
- 'run' => 'application/x-makeself',
- 'rusd' => 'application/route-usd+xml',
- 'rv' => 'video/vnd.rn-realvideo',
- 's' => 'text/x-asm',
- 's3m' => 'audio/s3m',
- 'saf' => 'application/vnd.yamaha.smaf-audio',
- 'sass' => 'text/x-sass',
- 'sbml' => 'application/sbml+xml',
- 'sc' => 'application/vnd.ibm.secure-container',
- 'scd' => 'application/x-msschedule',
- 'scm' => 'application/vnd.lotus-screencam',
- 'scq' => 'application/scvp-cv-request',
- 'scs' => 'application/scvp-cv-response',
- 'scss' => 'text/x-scss',
- 'scurl' => 'text/vnd.curl.scurl',
- 'sda' => 'application/vnd.stardivision.draw',
- 'sdc' => 'application/vnd.stardivision.calc',
- 'sdd' => 'application/vnd.stardivision.impress',
- 'sdkd' => 'application/vnd.solent.sdkm+xml',
- 'sdkm' => 'application/vnd.solent.sdkm+xml',
- 'sdp' => 'application/sdp',
- 'sdw' => 'application/vnd.stardivision.writer',
- 'sea' => 'application/octet-stream',
- 'see' => 'application/vnd.seemail',
- 'seed' => 'application/vnd.fdsn.seed',
- 'sema' => 'application/vnd.sema',
- 'semd' => 'application/vnd.semd',
- 'semf' => 'application/vnd.semf',
- 'senmlx' => 'application/senml+xml',
- 'sensmlx' => 'application/sensml+xml',
- 'ser' => 'application/java-serialized-object',
- 'setpay' => 'application/set-payment-initiation',
- 'setreg' => 'application/set-registration-initiation',
- 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',
- 'sfs' => 'application/vnd.spotfire.sfs',
- 'sfv' => 'text/x-sfv',
- 'sgi' => 'image/sgi',
- 'sgl' => 'application/vnd.stardivision.writer-global',
- 'sgm' => 'text/sgml',
- 'sgml' => 'text/sgml',
- 'sh' => 'application/x-sh',
- 'shar' => 'application/x-shar',
- 'shex' => 'text/shex',
- 'shf' => 'application/shf+xml',
- 'shtml' => 'text/html',
- 'sid' => 'image/x-mrsid-image',
- 'sieve' => 'application/sieve',
- 'sig' => 'application/pgp-signature',
- 'sil' => 'audio/silk',
- 'silo' => 'model/mesh',
- 'sis' => 'application/vnd.symbian.install',
- 'sisx' => 'application/vnd.symbian.install',
- 'sit' => 'application/x-stuffit',
- 'sitx' => 'application/x-stuffitx',
- 'siv' => 'application/sieve',
- 'skd' => 'application/vnd.koan',
- 'skm' => 'application/vnd.koan',
- 'skp' => 'application/vnd.koan',
- 'skt' => 'application/vnd.koan',
- 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',
- 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
- 'slim' => 'text/slim',
- 'slm' => 'text/slim',
- 'sls' => 'application/route-s-tsid+xml',
- 'slt' => 'application/vnd.epson.salt',
- 'sm' => 'application/vnd.stepmania.stepchart',
- 'smf' => 'application/vnd.stardivision.math',
- 'smi' => 'application/smil',
- 'smil' => 'application/smil',
- 'smv' => 'video/x-smv',
- 'smzip' => 'application/vnd.stepmania.package',
- 'snd' => 'audio/basic',
- 'snf' => 'application/x-font-snf',
- 'so' => 'application/octet-stream',
- 'spc' => 'application/x-pkcs7-certificates',
- 'spdx' => 'text/spdx',
- 'spf' => 'application/vnd.yamaha.smaf-phrase',
- 'spl' => 'application/x-futuresplash',
- 'spot' => 'text/vnd.in3d.spot',
- 'spp' => 'application/scvp-vp-response',
- 'spq' => 'application/scvp-vp-request',
- 'spx' => 'audio/ogg',
- 'sql' => 'application/x-sql',
- 'src' => 'application/x-wais-source',
- 'srt' => 'application/x-subrip',
- 'sru' => 'application/sru+xml',
- 'srx' => 'application/sparql-results+xml',
- 'ssdl' => 'application/ssdl+xml',
- 'sse' => 'application/vnd.kodak-descriptor',
- 'ssf' => 'application/vnd.epson.ssf',
- 'ssml' => 'application/ssml+xml',
- 'sst' => 'application/octet-stream',
- 'st' => 'application/vnd.sailingtracker.track',
- 'stc' => 'application/vnd.sun.xml.calc.template',
- 'std' => 'application/vnd.sun.xml.draw.template',
- 'stf' => 'application/vnd.wt.stf',
- 'sti' => 'application/vnd.sun.xml.impress.template',
- 'stk' => 'application/hyperstudio',
- 'stl' => 'model/stl',
- 'str' => 'application/vnd.pg.format',
- 'stw' => 'application/vnd.sun.xml.writer.template',
- 'styl' => 'text/stylus',
- 'stylus' => 'text/stylus',
- 'sub' => 'text/vnd.dvb.subtitle',
- 'sus' => 'application/vnd.sus-calendar',
- 'susp' => 'application/vnd.sus-calendar',
- 'sv4cpio' => 'application/x-sv4cpio',
- 'sv4crc' => 'application/x-sv4crc',
- 'svc' => 'application/vnd.dvb.service',
- 'svd' => 'application/vnd.svd',
- 'svg' => 'image/svg+xml',
- 'svgz' => 'image/svg+xml',
- 'swa' => 'application/x-director',
- 'swf' => 'application/x-shockwave-flash',
- 'swi' => 'application/vnd.aristanetworks.swi',
- 'swidtag' => 'application/swid+xml',
- 'sxc' => 'application/vnd.sun.xml.calc',
- 'sxd' => 'application/vnd.sun.xml.draw',
- 'sxg' => 'application/vnd.sun.xml.writer.global',
- 'sxi' => 'application/vnd.sun.xml.impress',
- 'sxm' => 'application/vnd.sun.xml.math',
- 'sxw' => 'application/vnd.sun.xml.writer',
- 't' => 'text/troff',
- 't3' => 'application/x-t3vm-image',
- 't38' => 'image/t38',
- 'taglet' => 'application/vnd.mynfc',
- 'tao' => 'application/vnd.tao.intent-module-archive',
- 'tap' => 'image/vnd.tencent.tap',
- 'tar' => 'application/x-tar',
- 'tcap' => 'application/vnd.3gpp2.tcap',
- 'tcl' => 'application/x-tcl',
- 'td' => 'application/urc-targetdesc+xml',
- 'teacher' => 'application/vnd.smart.teacher',
- 'tei' => 'application/tei+xml',
- 'teicorpus' => 'application/tei+xml',
- 'tex' => 'application/x-tex',
- 'texi' => 'application/x-texinfo',
- 'texinfo' => 'application/x-texinfo',
- 'text' => 'text/plain',
- 'tfi' => 'application/thraud+xml',
- 'tfm' => 'application/x-tex-tfm',
- 'tfx' => 'image/tiff-fx',
- 'tga' => 'image/x-tga',
- 'tgz' => 'application/x-tar',
- 'thmx' => 'application/vnd.ms-officetheme',
- 'tif' => 'image/tiff',
- 'tiff' => 'image/tiff',
- 'tk' => 'application/x-tcl',
- 'tmo' => 'application/vnd.tmobile-livetv',
- 'toml' => 'application/toml',
- 'torrent' => 'application/x-bittorrent',
- 'tpl' => 'application/vnd.groove-tool-template',
- 'tpt' => 'application/vnd.trid.tpt',
- 'tr' => 'text/troff',
- 'tra' => 'application/vnd.trueapp',
- 'trm' => 'application/x-msterminal',
- 'ts' => 'video/mp2t',
- 'tsd' => 'application/timestamped-data',
- 'tsv' => 'text/tab-separated-values',
- 'ttc' => 'font/collection',
- 'ttf' => 'font/ttf',
- 'ttl' => 'text/turtle',
- 'ttml' => 'application/ttml+xml',
- 'twd' => 'application/vnd.simtech-mindmapper',
- 'twds' => 'application/vnd.simtech-mindmapper',
- 'txd' => 'application/vnd.genomatix.tuxedo',
- 'txf' => 'application/vnd.mobius.txf',
- 'txt' => 'text/plain',
- 'u8dsn' => 'message/global-delivery-status',
- 'u8hdr' => 'message/global-headers',
- 'u8mdn' => 'message/global-disposition-notification',
- 'u8msg' => 'message/global',
- 'u32' => 'application/x-authorware-bin',
- 'ubj' => 'application/ubjson',
- 'udeb' => 'application/x-debian-package',
- 'ufd' => 'application/vnd.ufdl',
- 'ufdl' => 'application/vnd.ufdl',
- 'ulx' => 'application/x-glulx',
- 'umj' => 'application/vnd.umajin',
- 'unityweb' => 'application/vnd.unity',
- 'uoml' => 'application/vnd.uoml+xml',
- 'uri' => 'text/uri-list',
- 'uris' => 'text/uri-list',
- 'urls' => 'text/uri-list',
- 'usdz' => 'model/vnd.usdz+zip',
- 'ustar' => 'application/x-ustar',
- 'utz' => 'application/vnd.uiq.theme',
- 'uu' => 'text/x-uuencode',
- 'uva' => 'audio/vnd.dece.audio',
- 'uvd' => 'application/vnd.dece.data',
- 'uvf' => 'application/vnd.dece.data',
- 'uvg' => 'image/vnd.dece.graphic',
- 'uvh' => 'video/vnd.dece.hd',
- 'uvi' => 'image/vnd.dece.graphic',
- 'uvm' => 'video/vnd.dece.mobile',
- 'uvp' => 'video/vnd.dece.pd',
- 'uvs' => 'video/vnd.dece.sd',
- 'uvt' => 'application/vnd.dece.ttml+xml',
- 'uvu' => 'video/vnd.uvvu.mp4',
- 'uvv' => 'video/vnd.dece.video',
- 'uvva' => 'audio/vnd.dece.audio',
- 'uvvd' => 'application/vnd.dece.data',
- 'uvvf' => 'application/vnd.dece.data',
- 'uvvg' => 'image/vnd.dece.graphic',
- 'uvvh' => 'video/vnd.dece.hd',
- 'uvvi' => 'image/vnd.dece.graphic',
- 'uvvm' => 'video/vnd.dece.mobile',
- 'uvvp' => 'video/vnd.dece.pd',
- 'uvvs' => 'video/vnd.dece.sd',
- 'uvvt' => 'application/vnd.dece.ttml+xml',
- 'uvvu' => 'video/vnd.uvvu.mp4',
- 'uvvv' => 'video/vnd.dece.video',
- 'uvvx' => 'application/vnd.dece.unspecified',
- 'uvvz' => 'application/vnd.dece.zip',
- 'uvx' => 'application/vnd.dece.unspecified',
- 'uvz' => 'application/vnd.dece.zip',
- 'vbox' => 'application/x-virtualbox-vbox',
- 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack',
- 'vcard' => 'text/vcard',
- 'vcd' => 'application/x-cdlink',
- 'vcf' => 'text/x-vcard',
- 'vcg' => 'application/vnd.groove-vcard',
- 'vcs' => 'text/x-vcalendar',
- 'vcx' => 'application/vnd.vcx',
- 'vdi' => 'application/x-virtualbox-vdi',
- 'vhd' => 'application/x-virtualbox-vhd',
- 'vis' => 'application/vnd.visionary',
- 'viv' => 'video/vnd.vivo',
- 'vlc' => 'application/videolan',
- 'vmdk' => 'application/x-virtualbox-vmdk',
- 'vob' => 'video/x-ms-vob',
- 'vor' => 'application/vnd.stardivision.writer',
- 'vox' => 'application/x-authorware-bin',
- 'vrml' => 'model/vrml',
- 'vsd' => 'application/vnd.visio',
- 'vsf' => 'application/vnd.vsf',
- 'vss' => 'application/vnd.visio',
- 'vst' => 'application/vnd.visio',
- 'vsw' => 'application/vnd.visio',
- 'vtf' => 'image/vnd.valve.source.texture',
- 'vtt' => 'text/vtt',
- 'vtu' => 'model/vnd.vtu',
- 'vxml' => 'application/voicexml+xml',
- 'w3d' => 'application/x-director',
- 'wad' => 'application/x-doom',
- 'wadl' => 'application/vnd.sun.wadl+xml',
- 'war' => 'application/java-archive',
- 'wasm' => 'application/wasm',
- 'wav' => 'audio/x-wav',
- 'wax' => 'audio/x-ms-wax',
- 'wbmp' => 'image/vnd.wap.wbmp',
- 'wbs' => 'application/vnd.criticaltools.wbs+xml',
- 'wbxml' => 'application/wbxml',
- 'wcm' => 'application/vnd.ms-works',
- 'wdb' => 'application/vnd.ms-works',
- 'wdp' => 'image/vnd.ms-photo',
- 'weba' => 'audio/webm',
- 'webapp' => 'application/x-web-app-manifest+json',
- 'webm' => 'video/webm',
- 'webmanifest' => 'application/manifest+json',
- 'webp' => 'image/webp',
- 'wg' => 'application/vnd.pmi.widget',
- 'wgt' => 'application/widget',
- 'wks' => 'application/vnd.ms-works',
- 'wm' => 'video/x-ms-wm',
- 'wma' => 'audio/x-ms-wma',
- 'wmd' => 'application/x-ms-wmd',
- 'wmf' => 'image/wmf',
- 'wml' => 'text/vnd.wap.wml',
- 'wmlc' => 'application/wmlc',
- 'wmls' => 'text/vnd.wap.wmlscript',
- 'wmlsc' => 'application/vnd.wap.wmlscriptc',
- 'wmv' => 'video/x-ms-wmv',
- 'wmx' => 'video/x-ms-wmx',
- 'wmz' => 'application/x-msmetafile',
- 'woff' => 'font/woff',
- 'woff2' => 'font/woff2',
- 'word' => 'application/msword',
- 'wpd' => 'application/vnd.wordperfect',
- 'wpl' => 'application/vnd.ms-wpl',
- 'wps' => 'application/vnd.ms-works',
- 'wqd' => 'application/vnd.wqd',
- 'wri' => 'application/x-mswrite',
- 'wrl' => 'model/vrml',
- 'wsc' => 'message/vnd.wfa.wsc',
- 'wsdl' => 'application/wsdl+xml',
- 'wspolicy' => 'application/wspolicy+xml',
- 'wtb' => 'application/vnd.webturbo',
- 'wvx' => 'video/x-ms-wvx',
- 'x3d' => 'model/x3d+xml',
- 'x3db' => 'model/x3d+fastinfoset',
- 'x3dbz' => 'model/x3d+binary',
- 'x3dv' => 'model/x3d-vrml',
- 'x3dvz' => 'model/x3d+vrml',
- 'x3dz' => 'model/x3d+xml',
- 'x32' => 'application/x-authorware-bin',
- 'x_b' => 'model/vnd.parasolid.transmit.binary',
- 'x_t' => 'model/vnd.parasolid.transmit.text',
- 'xaml' => 'application/xaml+xml',
- 'xap' => 'application/x-silverlight-app',
- 'xar' => 'application/vnd.xara',
- 'xav' => 'application/xcap-att+xml',
- 'xbap' => 'application/x-ms-xbap',
- 'xbd' => 'application/vnd.fujixerox.docuworks.binder',
- 'xbm' => 'image/x-xbitmap',
- 'xca' => 'application/xcap-caps+xml',
- 'xcs' => 'application/calendar+xml',
- 'xdf' => 'application/xcap-diff+xml',
- 'xdm' => 'application/vnd.syncml.dm+xml',
- 'xdp' => 'application/vnd.adobe.xdp+xml',
- 'xdssc' => 'application/dssc+xml',
- 'xdw' => 'application/vnd.fujixerox.docuworks',
- 'xel' => 'application/xcap-el+xml',
- 'xenc' => 'application/xenc+xml',
- 'xer' => 'application/xcap-error+xml',
- 'xfdf' => 'application/vnd.adobe.xfdf',
- 'xfdl' => 'application/vnd.xfdl',
- 'xht' => 'application/xhtml+xml',
- 'xhtml' => 'application/xhtml+xml',
- 'xhvml' => 'application/xv+xml',
- 'xif' => 'image/vnd.xiff',
- 'xl' => 'application/excel',
- 'xla' => 'application/vnd.ms-excel',
- 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
- 'xlc' => 'application/vnd.ms-excel',
- 'xlf' => 'application/xliff+xml',
- 'xlm' => 'application/vnd.ms-excel',
- 'xls' => 'application/vnd.ms-excel',
- 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
- 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
- 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- 'xlt' => 'application/vnd.ms-excel',
- 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
- 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
- 'xlw' => 'application/vnd.ms-excel',
- 'xm' => 'audio/xm',
- 'xml' => 'application/xml',
- 'xns' => 'application/xcap-ns+xml',
- 'xo' => 'application/vnd.olpc-sugar',
- 'xop' => 'application/xop+xml',
- 'xpi' => 'application/x-xpinstall',
- 'xpl' => 'application/xproc+xml',
- 'xpm' => 'image/x-xpixmap',
- 'xpr' => 'application/vnd.is-xpr',
- 'xps' => 'application/vnd.ms-xpsdocument',
- 'xpw' => 'application/vnd.intercon.formnet',
- 'xpx' => 'application/vnd.intercon.formnet',
- 'xsd' => 'application/xml',
- 'xsl' => 'application/xml',
- 'xslt' => 'application/xslt+xml',
- 'xsm' => 'application/vnd.syncml+xml',
- 'xspf' => 'application/xspf+xml',
- 'xul' => 'application/vnd.mozilla.xul+xml',
- 'xvm' => 'application/xv+xml',
- 'xvml' => 'application/xv+xml',
- 'xwd' => 'image/x-xwindowdump',
- 'xyz' => 'chemical/x-xyz',
- 'xz' => 'application/x-xz',
- 'yaml' => 'text/yaml',
- 'yang' => 'application/yang',
- 'yin' => 'application/yin+xml',
- 'yml' => 'text/yaml',
- 'ymp' => 'text/x-suse-ymp',
- 'z' => 'application/x-compress',
- 'z1' => 'application/x-zmachine',
- 'z2' => 'application/x-zmachine',
- 'z3' => 'application/x-zmachine',
- 'z4' => 'application/x-zmachine',
- 'z5' => 'application/x-zmachine',
- 'z6' => 'application/x-zmachine',
- 'z7' => 'application/x-zmachine',
- 'z8' => 'application/x-zmachine',
- 'zaz' => 'application/vnd.zzazz.deck+xml',
- 'zip' => 'application/x-zip',
- 'zir' => 'application/vnd.zul',
- 'zirz' => 'application/vnd.zul',
- 'zmm' => 'application/vnd.handheld-entertainment+xml',
- 'zsh' => 'text/x-scriptzsh',
- ];
-
- public function lookupMimeType(string $extension): ?string
- {
- return self::MIME_TYPES_FOR_EXTENSIONS[$extension] ?? null;
- }
-}
diff --git a/league/mime-type-detection/src/MimeTypeDetector.php b/league/mime-type-detection/src/MimeTypeDetector.php
deleted file mode 100644
index 5d799d2a8..000000000
--- a/league/mime-type-detection/src/MimeTypeDetector.php
+++ /dev/null
@@ -1,19 +0,0 @@
-