Skip to content

Commit

Permalink
Merge pull request #10 from billyct/master
Browse files Browse the repository at this point in the history
🐰 增加两个 plugin:PrivateDownloadUrl,RefreshFile
  • Loading branch information
overtrue authored Nov 29, 2017
2 parents e370ece + e823566 commit 64e0d51
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 2 deletions.
18 changes: 18 additions & 0 deletions src/Plugins/PrivateDownloadUrl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace Overtrue\Flysystem\Qiniu\Plugins;

use League\Flysystem\Plugin\AbstractPlugin;

class PrivateDownloadUrl extends AbstractPlugin
{
public function getMethod()
{
return 'privateDownloadUrl';
}

public function handle($path, $expires = 3600)
{
return $this->filesystem->getAdapter()->privateDownloadUrl($path, $expires);
}
}
18 changes: 18 additions & 0 deletions src/Plugins/RefreshFile.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace Overtrue\Flysystem\Qiniu\Plugins;

use League\Flysystem\Plugin\AbstractPlugin;

class RefreshFile extends AbstractPlugin
{
public function getMethod()
{
return 'refresh';
}

public function handle($path = [])
{
return $this->filesystem->getAdapter()->refresh($path);
}
}
62 changes: 61 additions & 1 deletion src/QiniuAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use League\Flysystem\Adapter\Polyfill\NotSupportingVisibilityTrait;
use League\Flysystem\Config;
use Qiniu\Auth;
use Qiniu\Cdn\CdnManager;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;

Expand Down Expand Up @@ -60,6 +61,11 @@ class QiniuAdapter extends AbstractAdapter
*/
protected $bucketManager;

/**
* @var \Qiniu\Cdn\CdnManager
*/
protected $cdnManager;

/**
* QiniuAdapter constructor.
*
Expand Down Expand Up @@ -127,7 +133,7 @@ public function writeStream($path, $resource, Config $config)

$response = $this->write($path, $contents, $config);

if ($response === false) {
if (false === $response) {
return $response;
}

Expand Down Expand Up @@ -360,6 +366,40 @@ public function fetch($path, $url)
return $response;
}

/**
* Get private file download url.
*
* @param string $path
* @param int $expires
*
* @return string
*/
public function privateDownloadUrl($path, $expires = 3600)
{
$url = $this->getUrl($path);

return $this->getAuthManager()->privateDownloadUrl($url, $expires);
}

/**
* Refresh file cache.
*
* @param string|array $path
*
* @return array
*/
public function refresh($path)
{
if (is_string($path)) {
$path = [$path];
}

// 将 $path 变成完整的 url
$urls = array_map([$this, 'getUrl'], $path);

return $this->getCdnManager()->refreshUrls($urls);
}

/**
* Get the mime-type of a file.
*
Expand Down Expand Up @@ -426,6 +466,18 @@ public function setAuthManager(Auth $manager)
return $this;
}

/**
* @param CdnManager $manager
*
* @return $this
*/
public function setCdnManager(CdnManager $manager)
{
$this->cdnManager = $manager;

return $this;
}

/**
* @return \Qiniu\Storage\BucketManager
*/
Expand All @@ -450,6 +502,14 @@ public function getUploadManager()
return $this->uploadManager ?: $this->uploadManager = new UploadManager();
}

/**
* @return \Qiniu\Cdn\CdnManager
*/
public function getCdnManager()
{
return $this->cdnManager ?: $this->cdnManager = new CdnManager($this->getAuthManager());
}

/**
* Get the upload token.
*
Expand Down
26 changes: 25 additions & 1 deletion tests/QiniuAdapterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,19 @@ public function qiniuProvider()
$authManager = \Mockery::mock('stdClass');
$bucketManager = \Mockery::mock('stdClass');
$uploadManager = \Mockery::mock('stdClass');
$cdnManager = \Mockery::mock('stdClass');

$authManager->allows()->uploadToken('bucket')->andReturns('token');

$adapter->allows([
'getAuthManager' => $authManager,
'getUploadManager' => $uploadManager,
'getBucketManager' => $bucketManager,
'getCdnManager' => $cdnManager,
]);

return [
[$adapter, compact('authManager', 'bucketManager', 'uploadManager')],
[$adapter, compact('authManager', 'bucketManager', 'uploadManager', 'cdnManager')],
];
}

Expand Down Expand Up @@ -289,6 +291,28 @@ public function testGetSize($adapter)
$this->assertSame('meta-data', $adapter->getSize('foo.md'));
}

/**
* @dataProvider qiniuProvider
*/
public function testPrivateDownloadUrl($adapter, $managers)
{
$managers['authManager']->expects()->privateDownloadUrl('http://domain.com/url', 3600)->andReturn('url');
$this->assertSame('url', $adapter->privateDownloadUrl('url'));

$managers['authManager']->expects()->privateDownloadUrl('http://domain.com/url', 7200)->andReturn('url');
$this->assertSame('url', $adapter->privateDownloadUrl('url', 7200));
}

/**
* @dataProvider qiniuProvider
*/
public function testRefresh($adapter, $managers)
{
$managers['cdnManager']->expects()->refreshUrls(['http://domain.com/url'])->andReturn('url');
$this->assertSame('url', $adapter->refresh('url'));
$this->assertSame('url', $adapter->refresh(['url']));
}

/**
* @dataProvider qiniuProvider
*/
Expand Down

0 comments on commit 64e0d51

Please sign in to comment.