Primo Committ
This commit is contained in:
147
vendor/laravel/framework/src/Illuminate/Http/Testing/File.php
vendored
Normal file
147
vendor/laravel/framework/src/Illuminate/Http/Testing/File.php
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Http\Testing;
|
||||
|
||||
use Illuminate\Http\UploadedFile;
|
||||
|
||||
class File extends UploadedFile
|
||||
{
|
||||
/**
|
||||
* The name of the file.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* The temporary file resource.
|
||||
*
|
||||
* @var resource
|
||||
*/
|
||||
public $tempFile;
|
||||
|
||||
/**
|
||||
* The "size" to report.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $sizeToReport;
|
||||
|
||||
/**
|
||||
* The MIME type to report.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
public $mimeTypeToReport;
|
||||
|
||||
/**
|
||||
* Create a new file instance.
|
||||
*
|
||||
* @param string $name
|
||||
* @param resource $tempFile
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($name, $tempFile)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->tempFile = $tempFile;
|
||||
|
||||
parent::__construct(
|
||||
$this->tempFilePath(), $name, $this->getMimeType(),
|
||||
null, true
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new fake file.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string|int $kilobytes
|
||||
* @return \Illuminate\Http\Testing\File
|
||||
*/
|
||||
public static function create($name, $kilobytes = 0)
|
||||
{
|
||||
return (new FileFactory)->create($name, $kilobytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new fake file with content.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $content
|
||||
* @return \Illuminate\Http\Testing\File
|
||||
*/
|
||||
public static function createWithContent($name, $content)
|
||||
{
|
||||
return (new FileFactory)->createWithContent($name, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new fake image.
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @return \Illuminate\Http\Testing\File
|
||||
*/
|
||||
public static function image($name, $width = 10, $height = 10)
|
||||
{
|
||||
return (new FileFactory)->image($name, $width, $height);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the "size" of the file in kilobytes.
|
||||
*
|
||||
* @param int $kilobytes
|
||||
* @return $this
|
||||
*/
|
||||
public function size($kilobytes)
|
||||
{
|
||||
$this->sizeToReport = $kilobytes * 1024;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the size of the file.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getSize()
|
||||
{
|
||||
return $this->sizeToReport ?: parent::getSize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the "MIME type" for the file.
|
||||
*
|
||||
* @param string $mimeType
|
||||
* @return $this
|
||||
*/
|
||||
public function mimeType($mimeType)
|
||||
{
|
||||
$this->mimeTypeToReport = $mimeType;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the MIME type of the file.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMimeType()
|
||||
{
|
||||
return $this->mimeTypeToReport ?: MimeType::from($this->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path to the temporary file.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function tempFilePath()
|
||||
{
|
||||
return stream_get_meta_data($this->tempFile)['uri'];
|
||||
}
|
||||
}
|
||||
89
vendor/laravel/framework/src/Illuminate/Http/Testing/FileFactory.php
vendored
Normal file
89
vendor/laravel/framework/src/Illuminate/Http/Testing/FileFactory.php
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Http\Testing;
|
||||
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class FileFactory
|
||||
{
|
||||
/**
|
||||
* Create a new fake file.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string|int $kilobytes
|
||||
* @param string|null $mimeType
|
||||
* @return \Illuminate\Http\Testing\File
|
||||
*/
|
||||
public function create($name, $kilobytes = 0, $mimeType = null)
|
||||
{
|
||||
if (is_string($kilobytes)) {
|
||||
return $this->createWithContent($name, $kilobytes);
|
||||
}
|
||||
|
||||
return tap(new File($name, tmpfile()), function ($file) use ($kilobytes, $mimeType) {
|
||||
$file->sizeToReport = $kilobytes * 1024;
|
||||
$file->mimeTypeToReport = $mimeType;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new fake file with content.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $content
|
||||
* @return \Illuminate\Http\Testing\File
|
||||
*/
|
||||
public function createWithContent($name, $content)
|
||||
{
|
||||
$tmpfile = tmpfile();
|
||||
|
||||
fwrite($tmpfile, $content);
|
||||
|
||||
return tap(new File($name, $tmpfile), function ($file) use ($tmpfile) {
|
||||
$file->sizeToReport = fstat($tmpfile)['size'];
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new fake image.
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @return \Illuminate\Http\Testing\File
|
||||
*/
|
||||
public function image($name, $width = 10, $height = 10)
|
||||
{
|
||||
return new File($name, $this->generateImage(
|
||||
$width, $height, Str::endsWith(Str::lower($name), ['.jpg', '.jpeg']) ? 'jpeg' : 'png'
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a dummy image of the given width and height.
|
||||
*
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @param string $type
|
||||
* @return resource
|
||||
*/
|
||||
protected function generateImage($width, $height, $type)
|
||||
{
|
||||
return tap(tmpfile(), function ($temp) use ($width, $height, $type) {
|
||||
ob_start();
|
||||
|
||||
$image = imagecreatetruecolor($width, $height);
|
||||
|
||||
switch ($type) {
|
||||
case 'jpeg':
|
||||
imagejpeg($image);
|
||||
break;
|
||||
case 'png':
|
||||
imagepng($image);
|
||||
break;
|
||||
}
|
||||
|
||||
fwrite($temp, ob_get_clean());
|
||||
});
|
||||
}
|
||||
}
|
||||
65
vendor/laravel/framework/src/Illuminate/Http/Testing/MimeType.php
vendored
Normal file
65
vendor/laravel/framework/src/Illuminate/Http/Testing/MimeType.php
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Http\Testing;
|
||||
|
||||
use Illuminate\Support\Arr;
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
|
||||
class MimeType
|
||||
{
|
||||
/**
|
||||
* The mime types instance.
|
||||
*
|
||||
* @var \Symfony\Component\Mime\MimeTypes|null
|
||||
*/
|
||||
private static $mime;
|
||||
|
||||
/**
|
||||
* Get the mime types instance.
|
||||
*
|
||||
* @return \Symfony\Component\Mime\MimeTypesInterface
|
||||
*/
|
||||
public static function getMimeTypes()
|
||||
{
|
||||
if (self::$mime === null) {
|
||||
self::$mime = new MimeTypes();
|
||||
}
|
||||
|
||||
return self::$mime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the MIME type for a file based on the file's extension.
|
||||
*
|
||||
* @param string $filename
|
||||
* @return string
|
||||
*/
|
||||
public static function from($filename)
|
||||
{
|
||||
$extension = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
|
||||
return self::get($extension);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the MIME type for a given extension or return all mimes.
|
||||
*
|
||||
* @param string $extension
|
||||
* @return string
|
||||
*/
|
||||
public static function get($extension)
|
||||
{
|
||||
return Arr::first(self::getMimeTypes()->getMimeTypes($extension)) ?? 'application/octet-stream';
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for the extension of a given MIME type.
|
||||
*
|
||||
* @param string $mimeType
|
||||
* @return string|null
|
||||
*/
|
||||
public static function search($mimeType)
|
||||
{
|
||||
return Arr::first(self::getMimeTypes()->getExtensions($mimeType));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user