Skip to content

Commit

Permalink
Re-implement mime-type detection using path, make it an opt-in config…
Browse files Browse the repository at this point in the history
…uration.
  • Loading branch information
frankdejonge committed Apr 11, 2023
1 parent db44eaf commit b43f3e6
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 17 deletions.
9 changes: 5 additions & 4 deletions src/Ftp/FtpAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
use League\Flysystem\UnableToWriteFile;
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
use League\Flysystem\UnixVisibility\VisibilityConverter;
use League\MimeTypeDetection\ExtensionMimeTypeDetector;
use League\MimeTypeDetection\FinfoMimeTypeDetector;
use League\MimeTypeDetection\MimeTypeDetector;
use Throwable;
Expand Down Expand Up @@ -59,7 +58,8 @@ public function __construct(
FtpConnectionProvider $connectionProvider = null,
ConnectivityChecker $connectivityChecker = null,
VisibilityConverter $visibilityConverter = null,
MimeTypeDetector $mimeTypeDetector = null
MimeTypeDetector $mimeTypeDetector = null,
private bool $detectMimeTypeUsingPath = false,
) {
$this->systemType = $this->connectionOptions->systemType();
$this->connectionProvider = $connectionProvider ?: new FtpConnectionProvider();
Expand Down Expand Up @@ -295,8 +295,9 @@ private function fetchMetadata(string $path, string $type): FileAttributes
public function mimeType(string $path): FileAttributes
{
try {
$contents = $this->mimeTypeDetector instanceof ExtensionMimeTypeDetector ? '' : $this->read($path);
$mimetype = $this->mimeTypeDetector->detectMimeType($path, $contents);
$mimetype = $this->detectMimeTypeUsingPath
? $this->mimeTypeDetector->detectMimeTypeFromPath($path)
: $this->mimeTypeDetector->detectMimeType($path, $this->read($path));
} catch (Throwable $exception) {
throw UnableToRetrieveMetadata::mimeType($path, $exception->getMessage(), $exception);
}
Expand Down
1 change: 0 additions & 1 deletion src/Local/LocalFilesystemAdapterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
use function strnatcasecmp;
use function symlink;
use function usort;
use function var_dump;
use const LOCK_EX;

/**
Expand Down
9 changes: 5 additions & 4 deletions src/PhpseclibV2/SftpAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
use League\Flysystem\UnableToWriteFile;
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
use League\Flysystem\UnixVisibility\VisibilityConverter;
use League\MimeTypeDetection\ExtensionMimeTypeDetector;
use League\MimeTypeDetection\FinfoMimeTypeDetector;
use League\MimeTypeDetection\MimeTypeDetector;
use phpseclib\Net\SFTP;
Expand Down Expand Up @@ -59,7 +58,8 @@ public function __construct(
ConnectionProvider $connectionProvider,
string $root,
VisibilityConverter $visibilityConverter = null,
MimeTypeDetector $mimeTypeDetector = null
MimeTypeDetector $mimeTypeDetector = null,
private bool $detectMimeTypeUsingPath = false,
) {
$this->connectionProvider = $connectionProvider;
$this->prefixer = new PathPrefixer($root);
Expand Down Expand Up @@ -247,8 +247,9 @@ private function fetchFileMetadata(string $path, string $type): FileAttributes
public function mimeType(string $path): FileAttributes
{
try {
$contents = $this->mimeTypeDetector instanceof ExtensionMimeTypeDetector ? '' : $this->read($path);
$mimetype = $this->mimeTypeDetector->detectMimeType($path, $contents);
$mimetype = $this->detectMimeTypeUsingPath
? $this->mimeTypeDetector->detectMimeTypeFromPath($path)
: $this->mimeTypeDetector->detectMimeType($path, $this->read($path));
} catch (Throwable $exception) {
throw UnableToRetrieveMetadata::mimeType($path, $exception->getMessage(), $exception);
}
Expand Down
9 changes: 5 additions & 4 deletions src/PhpseclibV3/SftpAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
use League\Flysystem\UnableToWriteFile;
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
use League\Flysystem\UnixVisibility\VisibilityConverter;
use League\MimeTypeDetection\ExtensionMimeTypeDetector;
use League\MimeTypeDetection\FinfoMimeTypeDetector;
use League\MimeTypeDetection\MimeTypeDetector;
use phpseclib3\Net\SFTP;
Expand All @@ -40,7 +39,8 @@ public function __construct(
private ConnectionProvider $connectionProvider,
string $root,
VisibilityConverter $visibilityConverter = null,
MimeTypeDetector $mimeTypeDetector = null
MimeTypeDetector $mimeTypeDetector = null,
private bool $detectMimeTypeUsingPath = false,
) {
$this->prefixer = new PathPrefixer($root);
$this->visibilityConverter = $visibilityConverter ?: new PortableVisibilityConverter();
Expand Down Expand Up @@ -227,8 +227,9 @@ private function fetchFileMetadata(string $path, string $type): FileAttributes
public function mimeType(string $path): FileAttributes
{
try {
$contents = $this->mimeTypeDetector instanceof ExtensionMimeTypeDetector ? '' : $this->read($path);
$mimetype = $this->mimeTypeDetector->detectMimeType($path, $contents);
$mimetype = $this->detectMimeTypeUsingPath
? $this->mimeTypeDetector->detectMimeTypeFromPath($path)
: $this->mimeTypeDetector->detectMimeType($path, $this->read($path));
} catch (Throwable $exception) {
throw UnableToRetrieveMetadata::mimeType($path, $exception->getMessage(), $exception);
}
Expand Down
9 changes: 5 additions & 4 deletions src/ZipArchive/ZipArchiveAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
use League\Flysystem\UnableToWriteFile;
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
use League\Flysystem\UnixVisibility\VisibilityConverter;
use League\MimeTypeDetection\ExtensionMimeTypeDetector;
use League\MimeTypeDetection\FinfoMimeTypeDetector;
use League\MimeTypeDetection\MimeTypeDetector;
use Throwable;
Expand All @@ -42,7 +41,8 @@ public function __construct(
private ZipArchiveProvider $zipArchiveProvider,
string $root = '',
?MimeTypeDetector $mimeTypeDetector = null,
?VisibilityConverter $visibility = null
?VisibilityConverter $visibility = null,
private bool $detectMimeTypeUsingPath = false,
) {
$this->pathPrefixer = new PathPrefixer(ltrim($root, '/'));
$this->mimeTypeDetector = $mimeTypeDetector ?? new FinfoMimeTypeDetector();
Expand Down Expand Up @@ -235,8 +235,9 @@ public function visibility(string $path): FileAttributes
public function mimeType(string $path): FileAttributes
{
try {
$contents = $this->mimeTypeDetector instanceof ExtensionMimeTypeDetector ? '' : $this->read($path);
$mimetype = $this->mimeTypeDetector->detectMimeType($path, $contents);
$mimetype = $this->detectMimeTypeUsingPath
? $this->mimeTypeDetector->detectMimeTypeFromPath($path)
: $this->mimeTypeDetector->detectMimeType($path, $this->read($path));
} catch (Throwable $exception) {
throw UnableToRetrieveMetadata::mimeType($path, $exception->getMessage(), $exception);
}
Expand Down

0 comments on commit b43f3e6

Please sign in to comment.