Skip to content

Commit

Permalink
rename Uploaders to Apis
Browse files Browse the repository at this point in the history
  • Loading branch information
Recca Tsai committed Dec 13, 2016
1 parent 4589529 commit c091a80
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 80 deletions.
26 changes: 24 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,34 @@ Instead, you may of course manually update your require block and run `composer
}
```

## Factory

```php
use Recca0120\Upload\Receiver;

require __DIR__.'/vendor/autoload.php';

$config = [
'chunk_path' => 'absolute path';
'base_path' => 'absolute path',
'base_url' => 'http://dev/'
];

$inputName = 'file';
$destinationPath = 'relative path';
$api = 'fileapi'; // or plupload

Receiver::factory($config, $api)
->save($inputName, $destinationPath);
```

## Standalone

```php

use Recca0120\Upload\Receiver;
use Recca0120\Upload\Uploaders\FileAPI;
use Recca0120\Upload\Uploaders\Plupload;
use Recca0120\Upload\Apis\FileAPI;
use Recca0120\Upload\Apis\Plupload;

require __DIR__.'/vendor/autoload.php';

Expand All @@ -51,6 +72,7 @@ $config = [
$inputName = 'file';
$destinationPath = 'relative path';

// if use Plupload, new Recca0120\Upload\Apis\Plupload
$receiver = new Receiver(new FileAPI($config));
// save to $config['base_path'].'/'.$destinationPath;
echo $receiver->save($inputName, $destinationPath);
Expand Down
6 changes: 3 additions & 3 deletions src/Uploaders/Base.php → src/Apis/Base.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<?php

namespace Recca0120\Upload\Uploaders;
namespace Recca0120\Upload\Apis;

use Illuminate\Http\Request;
use Recca0120\Upload\Filesystem;
use Illuminate\Http\JsonResponse;
use Recca0120\Upload\Contracts\Uploader;
use Recca0120\Upload\Contracts\Api;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

abstract class Base implements Uploader
abstract class Base implements Api
{
/**
* TMPFILE_EXTENSION.
Expand Down
2 changes: 1 addition & 1 deletion src/Uploaders/FileAPI.php → src/Apis/FileAPI.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace Recca0120\Upload\Uploaders;
namespace Recca0120\Upload\Apis;

use Illuminate\Http\Request;

Expand Down
2 changes: 1 addition & 1 deletion src/Uploaders/Plupload.php → src/Apis/Plupload.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace Recca0120\Upload\Uploaders;
namespace Recca0120\Upload\Apis;

use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/Uploader.php → src/Contracts/Api.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

interface Uploader
interface Api
{
/**
* __construct.
Expand Down
32 changes: 16 additions & 16 deletions src/Receiver.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@
use Closure;
use Illuminate\Support\Arr;
use Illuminate\Http\JsonResponse;
use Recca0120\Upload\Uploaders\FileAPI;
use Recca0120\Upload\Contracts\Uploader;
use Recca0120\Upload\Uploaders\Plupload;
use Recca0120\Upload\Apis\FileAPI;
use Recca0120\Upload\Apis\Plupload;
use Recca0120\Upload\Contracts\Api;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class Receiver
{
/**
* $uploader.
* $api.
*
* @var \Recca0120\Upload\Contracts\Uploader
* @var \Recca0120\Upload\Contracts\Api
*/
protected $uploader;
protected $api;

/**
* $basePath.
Expand All @@ -37,14 +37,14 @@ class Receiver
/**
* __construct.
*
* @param \Recca0120\Upload\Contracts\Uploader $uploader
* @param \Recca0120\Upload\Contracts\Api $api
*/
public function __construct(Uploader $uploader)
public function __construct(Api $api)
{
$config = $uploader->getConfig();
$config = $api->getConfig();
$this->setBasePath(Arr::get($config, 'base_path'));
$this->setBaseUrl(Arr::get($config, 'base_url'));
$this->uploader = $uploader;
$this->api = $api;
}

/**
Expand Down Expand Up @@ -98,13 +98,12 @@ public function receive($inputName = 'file', Closure $callback = null, $destinat
$absolutePath = $this->getBasePath().$destinationPath;

try {
$uploadedFile = $this->uploader
->makeDirectory($absolutePath)
$uploadedFile = $this->api
->receive($inputName);

$response = $callback($uploadedFile, $destinationPath, $absolutePath, $this->baseUrl);
$response = $callback($uploadedFile, $destinationPath, $absolutePath, $this->baseUrl, $this->api);

return $this->uploader
return $this->api
->deleteUploadedFile($uploadedFile)
->completedResponse($response);
} catch (ChunkedResponseException $e) {
Expand Down Expand Up @@ -132,7 +131,8 @@ public function save($inputName, $destinationPath = 'storage/temp')
*/
protected function callback()
{
return function (UploadedFile $uploadedFile, $destinationPath, $absolutePath, $baseUrl) {
return function (UploadedFile $uploadedFile, $destinationPath, $absolutePath, $baseUrl, $api) {
$api->makeDirectory($absolutePath);
$clientOriginalName = $uploadedFile->getClientOriginalName();
$clientOriginalExtension = strtolower($uploadedFile->getClientOriginalExtension());
$basename = pathinfo($uploadedFile->getBasename(), PATHINFO_FILENAME);
Expand Down Expand Up @@ -175,7 +175,7 @@ protected function makeJsonResponse($data, $baseUrl = null)
* @param array $config
* @param string $class
*
* @return \Recca0120\Upload\Contracts\Uploader
* @return \Recca0120\Upload\Contracts\Api
*/
public static function factory($config = [], $class = FileAPI::class)
{
Expand Down
4 changes: 2 additions & 2 deletions src/UploadManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

use Illuminate\Http\Request;
use Illuminate\Support\Manager;
use Recca0120\Upload\Uploaders\FileAPI;
use Recca0120\Upload\Uploaders\Plupload;
use Recca0120\Upload\Apis\FileAPI;
use Recca0120\Upload\Apis\Plupload;

class UploadManager extends Manager
{
Expand Down
22 changes: 11 additions & 11 deletions tests/Uploader/FileAPITest.php → tests/Apis/FileAPITest.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

use Mockery as m;
use Recca0120\Upload\Uploaders\FileAPI;
use Recca0120\Upload\Apis\FileAPI;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class FileAPITest extends PHPUnit_Framework_TestCase
Expand Down Expand Up @@ -42,15 +42,15 @@ public function test_upload_single_file()
->shouldReceive('isFile')->with('file')->andReturn(true)
->shouldReceive('lastModified')->with('file')->andReturn(-1);

$uploader = new FileAPI($config, $request, $filesystem);
$api = new FileAPI($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$this->assertSame($uploadedFile, $uploader->receive($inputName));
$this->assertSame($uploadedFile, $api->receive($inputName));

$filesystem->shouldHaveReceived('isDirectory')->with($config['chunks_path'])->once();
$filesystem->shouldHaveReceived('makeDirectory')->with($config['chunks_path'], 0777, true, true)->once();
Expand Down Expand Up @@ -110,7 +110,7 @@ public function test_upload_chunk_file_throw_chunk_response()
->shouldReceive('isDirectory')->with($config['chunks_path'])->andReturn(false)
->shouldReceive('extension')->andReturn($extension);

$uploader = new FileAPI($config, $request, $filesystem);
$api = new FileAPI($config, $request, $filesystem);

/*
|------------------------------------------------------------
Expand All @@ -119,7 +119,7 @@ public function test_upload_chunk_file_throw_chunk_response()
*/

try {
$uploader->receive($inputName);
$api->receive($inputName);
} catch (ChunkedResponseException $e) {
$response = $e->getResponse();
$this->assertSame(201, $response->getStatusCode());
Expand Down Expand Up @@ -191,15 +191,15 @@ public function test_upload_chunk_file()
->shouldReceive('isFile')->with('file')->andReturn(true)
->shouldReceive('lastModified')->with('file')->andReturn(-1);

$uploader = new FileAPI($config, $request, $filesystem);
$api = new FileAPI($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$uploader->receive($inputName);
$api->receive($inputName);

$filesystem->shouldHaveReceived('isDirectory')->with($config['chunks_path'])->once();
$filesystem->shouldHaveReceived('makeDirectory')->with($config['chunks_path'], 0777, true, true)->once();
Expand Down Expand Up @@ -240,15 +240,15 @@ public function test_completed_response()
|------------------------------------------------------------
*/

$uploader = new FileAPI($config, $request, $filesystem);
$api = new FileAPI($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$this->assertSame($response, $uploader->completedResponse($response));
$this->assertSame($response, $api->completedResponse($response));
}

public function test_delete_uploaded_file()
Expand Down Expand Up @@ -280,15 +280,15 @@ public function test_delete_uploaded_file()
->shouldReceive('isFile')->with($file)->andReturn(true)
->shouldReceive('delete')->with($file)->andReturn(true);

$uploader = new FileAPI($config, $request, $filesystem);
$api = new FileAPI($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$this->assertSame($uploader, $uploader->deleteUploadedFile($uploadedFile));
$this->assertSame($api, $api->deleteUploadedFile($uploadedFile));
$uploadedFile->shouldHaveReceived('getPathname')->once();
$filesystem->shouldHaveReceived('isFile')->with($file)->once();
$filesystem->shouldHaveReceived('delete')->with($file)->once();
Expand Down
22 changes: 11 additions & 11 deletions tests/Uploader/PluploadTest.php → tests/Apis/PluploadTest.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

use Mockery as m;
use Recca0120\Upload\Uploaders\Plupload;
use Recca0120\Upload\Apis\Plupload;
use Recca0120\Upload\Exceptions\ChunkedResponseException;

class PluploadTest extends PHPUnit_Framework_TestCase
Expand Down Expand Up @@ -42,15 +42,15 @@ public function test_upload_single_file()
->shouldReceive('isFile')->with('file')->andReturn(true)
->shouldReceive('lastModified')->with('file')->andReturn(-1);

$uploader = new Plupload($config, $request, $filesystem);
$api = new Plupload($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$this->assertSame($uploadedFile, $uploader->receive($inputName));
$this->assertSame($uploadedFile, $api->receive($inputName));

$filesystem->shouldHaveReceived('isDirectory')->with($config['chunks_path'])->once();
$filesystem->shouldHaveReceived('makeDirectory')->with($config['chunks_path'], 0777, true, true)->once();
Expand Down Expand Up @@ -97,7 +97,7 @@ public function test_upload_chunk_file_throw_chunk_response()
$filesystem
->shouldReceive('isDirectory')->with($config['chunks_path'])->andReturn(false);

$uploader = new Plupload($config, $request, $filesystem);
$api = new Plupload($config, $request, $filesystem);

/*
|------------------------------------------------------------
Expand All @@ -106,7 +106,7 @@ public function test_upload_chunk_file_throw_chunk_response()
*/

try {
$uploader->receive($inputName);
$api->receive($inputName);
} catch (ChunkedResponseException $e) {
$response = $e->getResponse();
$this->assertSame(201, $response->getStatusCode());
Expand Down Expand Up @@ -179,15 +179,15 @@ public function test_upload_chunk_file()
->shouldReceive('isFile')->with('file')->andReturn(true)
->shouldReceive('lastModified')->with('file')->andReturn(-1);

$uploader = new Plupload($config, $request, $filesystem);
$api = new Plupload($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$uploader->receive($inputName);
$api->receive($inputName);

$filesystem->shouldHaveReceived('isDirectory')->with($config['chunks_path'])->once();
$filesystem->shouldHaveReceived('makeDirectory')->with($config['chunks_path'], 0777, true, true)->once();
Expand Down Expand Up @@ -231,15 +231,15 @@ public function test_completed_response()
$response
->shouldReceive('getData')->andReturn($data);

$uploader = new Plupload($config, $request, $filesystem);
$api = new Plupload($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$this->assertSame($response, $uploader->completedResponse($response));
$this->assertSame($response, $api->completedResponse($response));

$response->shouldHaveReceived('setData')->with([
'jsonrpc' => '2.0',
Expand Down Expand Up @@ -276,15 +276,15 @@ public function test_delete_uploaded_file()
->shouldReceive('isFile')->with($file)->andReturn(true)
->shouldReceive('delete')->with($file)->andReturn(true);

$uploader = new Plupload($config, $request, $filesystem);
$api = new Plupload($config, $request, $filesystem);

/*
|------------------------------------------------------------
| Assert
|------------------------------------------------------------
*/

$this->assertSame($uploader, $uploader->deleteUploadedFile($uploadedFile));
$this->assertSame($api, $api->deleteUploadedFile($uploadedFile));
$uploadedFile->shouldHaveReceived('getPathname')->once();
$filesystem->shouldHaveReceived('isFile')->with($file)->once();
$filesystem->shouldHaveReceived('delete')->with($file)->once();
Expand Down
Loading

0 comments on commit c091a80

Please sign in to comment.