Skip to content

Commit

Permalink
return Illuminate\Http\UploadedFile
Browse files Browse the repository at this point in the history
  • Loading branch information
recca0120 committed May 1, 2023
1 parent d2445dd commit 2e54413
Show file tree
Hide file tree
Showing 13 changed files with 27 additions and 32 deletions.
8 changes: 3 additions & 5 deletions src/Api.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,14 @@ public function cleanDirectory(string $path): ApiContract
* @throws ResourceOpenException
* @throws FileNotFoundException
*/
public function receive(string $name)
public function receive(string $name): UploadedFile
{
return $this->isChunked($name)
? $this->receiveChunked($name)
: $this->request->file($name);
}

public function deleteUploadedFile($uploadedFile): ApiContract
public function deleteUploadedFile(UploadedFile $uploadedFile): ApiContract
{
$file = $uploadedFile->getPathname();
if ($this->files->isFile($file) === true) {
Expand Down Expand Up @@ -130,10 +130,8 @@ abstract protected function isChunked(string $name): bool;
abstract protected function isCompleted(string $name): bool;

/**
* @return UploadedFile|\Symfony\Component\HttpFoundation\File\UploadedFile
*
* @throws FileNotFoundException
* @throws ResourceOpenException
*/
abstract protected function receiveChunked(string $name);
abstract protected function receiveChunked(string $name): UploadedFile;
}
3 changes: 2 additions & 1 deletion src/ChunkFile.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Recca0120\Upload;

use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ResourceOpenException;

class ChunkFile
Expand Down Expand Up @@ -93,7 +94,7 @@ public function appendFile($source, int $index = 0): ChunkFile
/**
* @throws FileNotFoundException
*/
public function createUploadedFile($chunks = null, $storageFile = null)
public function createUploadedFile($chunks = null, $storageFile = null): UploadedFile
{
$chunkFile = $this->chunkFile();

Expand Down
10 changes: 2 additions & 8 deletions src/Contracts/Api.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
use Illuminate\Http\JsonResponse;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;
use Symfony\Component\HttpFoundation\File\UploadedFile as SymfonyUploadedFile;

interface Api
{
Expand All @@ -18,16 +17,11 @@ public function makeDirectory(string $path): Api;
public function cleanDirectory(string $path): Api;

/**
* @return UploadedFile|SymfonyUploadedFile
*
* @throws ChunkedResponseException
*/
public function receive(string $name);
public function receive(string $name): UploadedFile;

/**
* @param UploadedFile|SymfonyUploadedFile $uploadedFile
*/
public function deleteUploadedFile($uploadedFile): Api;
public function deleteUploadedFile(UploadedFile $uploadedFile): Api;

public function completedResponse(JsonResponse $response): JsonResponse;
}
3 changes: 2 additions & 1 deletion src/Dropzone.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Recca0120\Upload;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class Dropzone extends FineUploader
Expand All @@ -29,7 +30,7 @@ protected function isCompleted(string $name): bool
return $totalChunkCount - 1 === $chunkIndex;
}

protected function receiveChunked(string $name)
protected function receiveChunked(string $name): UploadedFile
{
$uploadedFile = $this->request->file($name);
$originalName = $uploadedFile->getClientOriginalName();
Expand Down
3 changes: 2 additions & 1 deletion src/FileAPI.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Recca0120\Upload;

use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class FileAPI extends Api
Expand Down Expand Up @@ -42,7 +43,7 @@ protected function isCompleted(string $name): bool
return $end >= $total - 1;
}

protected function receiveChunked(string $name)
protected function receiveChunked(string $name): UploadedFile
{
$contentDisposition = (string) $this->request->header('content-disposition');
[$start, $end] = $this->parseContentRange();
Expand Down
3 changes: 2 additions & 1 deletion src/FilePond.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Recca0120\Upload;

use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class FilePond extends Api
Expand All @@ -20,7 +21,7 @@ protected function isCompleted(string $name): bool
return $offset + $length >= $size;
}

protected function receiveChunked(string $name)
protected function receiveChunked(string $name): UploadedFile
{
if (! $this->request->headers->has('Upload-Name')) {
throw new ChunkedResponseException(md5(uniqid('file-pond-', true)));
Expand Down
11 changes: 4 additions & 7 deletions src/Filesystem.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

namespace Recca0120\Upload;

use Illuminate\Filesystem\Filesystem as IlluminateFilesystem;
use Illuminate\Filesystem\Filesystem as BaseFilesystem;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ResourceOpenException;
use Symfony\Component\HttpFoundation\File\UploadedFile as SymfonyUploadedFile;
use TypeError;
use ValueError;

class Filesystem extends IlluminateFilesystem
class Filesystem extends BaseFilesystem
{
public function basename($path): string
{
Expand Down Expand Up @@ -39,11 +38,9 @@ public function appendStream($output, $input, int $offset): void
fclose($input);
}

public function createUploadedFile(string $path, string $originalName, string $mimeType)
public function createUploadedFile(string $path, string $originalName, string $mimeType): UploadedFile
{
$class = class_exists(UploadedFile::class) === true ? UploadedFile::class : SymfonyUploadedFile::class;

return new $class($path, $originalName, $mimeType, UPLOAD_ERR_OK, true);
return new UploadedFile($path, $originalName, $mimeType, UPLOAD_ERR_OK, true);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/FineUploader.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Recca0120\Upload;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class FineUploader extends Api
Expand All @@ -26,7 +27,7 @@ protected function isCompleted(string $name): bool
return empty($this->request->file($name));
}

protected function receiveChunked(string $name)
protected function receiveChunked(string $name): UploadedFile
{
$uploadedFile = $this->request->file($name);
$uuid = $this->request->get('qquuid');
Expand Down
3 changes: 2 additions & 1 deletion src/Plupload.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Recca0120\Upload;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class Plupload extends Api
Expand All @@ -25,7 +26,7 @@ protected function isCompleted(string $name): bool
return $chunk >= $chunks - 1;
}

protected function receiveChunked(string $name)
protected function receiveChunked(string $name): UploadedFile
{
$uploadedFile = $this->request->file($name);
$originalName = $this->request->get('name');
Expand Down
6 changes: 3 additions & 3 deletions tests/ApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
use PHPUnit\Framework\TestCase;
use Recca0120\Upload\Api as ApiBase;
use Recca0120\Upload\Filesystem;
use Symfony\Component\HttpFoundation\File\UploadedFile as SymfonyUploadedFile;

class ApiTest extends TestCase
{
Expand Down Expand Up @@ -73,7 +72,7 @@ public function testDeleteUploadedFile(): void
$request = m::mock(Request::class);
$request->allows('root')->once()->andReturn('root');

$uploadedFile = m::mock(SymfonyUploadedFile::class);
$uploadedFile = m::mock(UploadedFile::class);
$uploadedFile->allows('getPathname')->once()->andReturn($file = __FILE__);

$files = m::mock(Filesystem::class);
Expand Down Expand Up @@ -117,7 +116,8 @@ protected function isCompleted(string $name): bool
return true;
}

protected function receiveChunked(string $name)
protected function receiveChunked(string $name): UploadedFile
{
return UploadedFile::fake()->create('test.png');
}
}
2 changes: 1 addition & 1 deletion tests/ChunkFileTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
namespace Recca0120\Upload\Tests;

use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Http\UploadedFile;
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
use Mockery as m;
use PHPUnit\Framework\TestCase;
use Recca0120\Upload\ChunkFile;
use Recca0120\Upload\Exceptions\ResourceOpenException;
use Recca0120\Upload\Filesystem;
use Symfony\Component\HttpFoundation\File\UploadedFile;

class ChunkFileTest extends TestCase
{
Expand Down
2 changes: 1 addition & 1 deletion tests/FilesystemTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

namespace Recca0120\Upload\Tests;

use Illuminate\Http\UploadedFile;
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
use org\bovigo\vfs\content\LargeFileContent;
use org\bovigo\vfs\vfsStream;
use PHPUnit\Framework\TestCase;
use Recca0120\Upload\Exceptions\ResourceOpenException;
use Recca0120\Upload\Filesystem;
use Symfony\Component\HttpFoundation\File\UploadedFile;

class FilesystemTest extends TestCase
{
Expand Down
2 changes: 1 addition & 1 deletion tests/ReceiverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Recca0120\Upload\Tests;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\UploadedFile;
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
use Mockery as m;
use PHPUnit\Framework\TestCase;
Expand All @@ -12,7 +13,6 @@
use Recca0120\Upload\Plupload;
use Recca0120\Upload\Receiver;
use ReflectionClass;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Response;

class ReceiverTest extends TestCase
Expand Down

0 comments on commit 2e54413

Please sign in to comment.