|
21 | 21 | use League\Flysystem\UnableToDeleteDirectory;
|
22 | 22 | use League\Flysystem\UnableToDeleteFile;
|
23 | 23 | use League\Flysystem\UnableToGeneratePublicUrl;
|
| 24 | +use League\Flysystem\UnableToGenerateTemporaryUrl; |
24 | 25 | use League\Flysystem\UnableToMoveFile;
|
25 | 26 | use League\Flysystem\UnableToProvideChecksum;
|
26 | 27 | use League\Flysystem\UnableToReadFile;
|
27 | 28 | use League\Flysystem\UnableToRetrieveMetadata;
|
28 | 29 | use League\Flysystem\UnableToSetVisibility;
|
29 | 30 | use League\Flysystem\UnableToWriteFile;
|
30 | 31 | use League\Flysystem\UrlGeneration\PublicUrlGenerator;
|
| 32 | +use League\Flysystem\UrlGeneration\TemporaryUrlGenerator; |
31 | 33 | use League\MimeTypeDetection\FinfoMimeTypeDetector;
|
32 | 34 | use League\MimeTypeDetection\MimeTypeDetector;
|
33 | 35 | use Obs\ObsClient;
|
34 | 36 | use Obs\ObsException;
|
35 | 37 | use Psr\Http\Message\StreamInterface;
|
36 | 38 | use Psr\Http\Message\UriInterface;
|
37 | 39 |
|
38 |
| -class ObsAdapter implements FilesystemAdapter, PublicUrlGenerator, ChecksumProvider |
| 40 | +class ObsAdapter implements FilesystemAdapter, PublicUrlGenerator, ChecksumProvider, TemporaryUrlGenerator |
39 | 41 | {
|
40 | 42 | /**
|
41 | 43 | * @var string[]
|
@@ -697,4 +699,22 @@ public function checksum(string $path, Config $config): string
|
697 | 699 |
|
698 | 700 | return trim($metadata['ETag'], '"');
|
699 | 701 | }
|
| 702 | + |
| 703 | + public function temporaryUrl(string $path, DateTimeInterface $expiresAt, Config $config): string |
| 704 | + { |
| 705 | + try { |
| 706 | + /** @var array{SignedUrl: string} $model */ |
| 707 | + $model = $this->obsClient->createSignedUrl([ |
| 708 | + 'Bucket' => $this->bucket, |
| 709 | + 'Key' => $this->pathPrefixer->prefixPath($path), |
| 710 | + 'Expires' => $expiresAt->getTimestamp() - time(), |
| 711 | + 'Method' => 'GET', |
| 712 | + 'QueryParams' => (array) $config->get('gcp_signing_options', []), |
| 713 | + ]); |
| 714 | + |
| 715 | + return $model['SignedUrl']; |
| 716 | + } catch (\Throwable $throwable) { |
| 717 | + throw UnableToGenerateTemporaryUrl::dueToError($path, $throwable); |
| 718 | + } |
| 719 | + } |
700 | 720 | }
|
0 commit comments