Skip to content

Commit

Permalink
Add default file visibility.
Browse files Browse the repository at this point in the history
  • Loading branch information
rymanalu committed Dec 15, 2016
1 parent fc3ac23 commit 8d0cc8f
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 12 deletions.
16 changes: 15 additions & 1 deletion config/uploader.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@
|
*/

'default' => 'request',
'default' => 'request',

/*
|--------------------------------------------------------------------------
| Default File Visibility
|--------------------------------------------------------------------------
|
| This option controls the default file visibility when uploading a file.
| Feel free to adjust this as you want.
|
| Supported: "private", "public"
|
*/

'visibility' => 'private',

];
35 changes: 32 additions & 3 deletions src/Uploader.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use RuntimeException;
use BadMethodCallException;
use Illuminate\Support\Str;
use Illuminate\Contracts\Config\Repository as Config;
use Rymanalu\LaravelSimpleUploader\Contracts\Provider;
use Illuminate\Contracts\Filesystem\Factory as FilesystemManager;
use Rymanalu\LaravelSimpleUploader\Contracts\Uploader as UploaderContract;
Expand Down Expand Up @@ -40,6 +41,13 @@ class Uploader implements UploaderContract
*/
public $folder = '';

/**
* The Config implementation.
*
* @var \Illuminate\Contracts\Config\Repository
*/
protected $config;

/**
* The file provider implementation.
*
Expand All @@ -57,14 +65,15 @@ class Uploader implements UploaderContract
/**
* Create a new Uploader instance.
*
* @param \Illuminate\Contracts\Config\Repository $config
* @param \Illuminate\Contracts\Filesystem\Factory $filesystem
* @param \Rymanalu\LaravelSimpleUploader\Contracts\Provider $provider
* @return void
*/
public function __construct(FilesystemManager $filesystem, Provider $provider)
public function __construct(Config $config, FilesystemManager $filesystem, Provider $provider)
{
$this->config = $config;
$this->provider = $provider;

$this->filesystem = $filesystem;
}

Expand Down Expand Up @@ -142,6 +151,26 @@ public function upload($file, Closure $callback = null)
return true;
}

/**
* Get the file visibility.
*
* @return string
*/
public function getVisibility()
{
return $this->visibility ?: $this->getDefaultVisibility();
}

/**
* Get the default file visibility.
*
* @return string
*/
public function getDefaultVisibility()
{
return $this->config->get('uploader.visibility') ?: 'private';
}

/**
* Upload the given file and returns the filename if succeed.
*
Expand All @@ -160,7 +189,7 @@ protected function runUpload($file)

$filename = $this->getFullFileName($this->provider);

if ($this->filesystem->disk($this->disk)->put($filename, $this->provider->getContents(), $this->visibility)) {
if ($this->filesystem->disk($this->disk)->put($filename, $this->provider->getContents(), $this->getVisibility())) {
return $filename;
}

Expand Down
4 changes: 3 additions & 1 deletion src/UploaderManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ public function from($provider = null)
{
$provider = $provider ?: $this->getDefaultProvider();

return new Uploader($this->app->make('filesystem'), $this->createProviderInstance($provider));
return new Uploader(
$this->app->make('config'), $this->app->make('filesystem'), $this->createProviderInstance($provider)
);
}

/**
Expand Down
20 changes: 13 additions & 7 deletions tests/UploaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

use Mockery as m;
use Rymanalu\LaravelSimpleUploader\Uploader;
use Illuminate\Contracts\Config\Repository as Config;
use Rymanalu\LaravelSimpleUploader\Contracts\Provider;
use Illuminate\Contracts\Filesystem\Factory as FilesystemManager;
use Rymanalu\LaravelSimpleUploader\Contracts\Uploader as UploaderContract;
Expand All @@ -15,7 +16,7 @@ public function tearDown()

public function testSetFilesystemDisk()
{
$uploader = $this->createUploaderInstance($this->mockFilesystemManager(), $this->mockProvider());
$uploader = $this->createUploaderInstance($this->mockConfig(), $this->mockFilesystemManager(), $this->mockProvider());

$this->assertInstanceOf(UploaderContract::class, $uploader->uploadTo('s3'));

Expand All @@ -24,7 +25,7 @@ public function testSetFilesystemDisk()

public function testSetFolder()
{
$uploader = $this->createUploaderInstance($this->mockFilesystemManager(), $this->mockProvider());
$uploader = $this->createUploaderInstance($this->mockConfig(), $this->mockFilesystemManager(), $this->mockProvider());

$this->assertInstanceOf(UploaderContract::class, $uploader->toFolder('folder'));

Expand All @@ -33,7 +34,7 @@ public function testSetFolder()

public function testRenameFile()
{
$uploader = $this->createUploaderInstance($this->mockFilesystemManager(), $this->mockProvider());
$uploader = $this->createUploaderInstance($this->mockConfig(), $this->mockFilesystemManager(), $this->mockProvider());

$this->assertEmpty($uploader->filename);

Expand All @@ -44,7 +45,7 @@ public function testRenameFile()

public function testSetVisibility()
{
$uploader = $this->createUploaderInstance($this->mockFilesystemManager(), $this->mockProvider());
$uploader = $this->createUploaderInstance($this->mockConfig(), $this->mockFilesystemManager(), $this->mockProvider());

$this->assertEmpty($uploader->visibility);

Expand All @@ -55,13 +56,18 @@ public function testSetVisibility()

public function testDynamicUploadTo()
{
$uploader = $this->createUploaderInstance($this->mockFilesystemManager(), $this->mockProvider());
$uploader = $this->createUploaderInstance($this->mockConfig(), $this->mockFilesystemManager(), $this->mockProvider());

$this->assertInstanceOf(UploaderContract::class, $uploader->uploadToS3());

$this->assertEquals('s3', $uploader->disk);
}

protected function mockConfig()
{
return m::mock(Config::class);
}

protected function mockProvider()
{
return m::mock(Provider::class);
Expand All @@ -72,8 +78,8 @@ protected function mockFilesystemManager()
return m::mock(FilesystemManager::class);
}

protected function createUploaderInstance(FilesystemManager $filesystem, Provider $provider)
protected function createUploaderInstance(Config $config, FilesystemManager $filesystem, Provider $provider)
{
return new Uploader($filesystem, $provider);
return new Uploader($config, $filesystem, $provider);
}
}

0 comments on commit 8d0cc8f

Please sign in to comment.