/
home
/
sjslayjy
/
public_html
/
theweavenest
/
vendor
/
league
/
flysystem
/
src
/
AwsS3V3
/
Upload File
HOME
<?php declare(strict_types=1); namespace League\Flysystem\AwsS3V3; use Aws\Command; use Aws\CommandInterface; use Aws\ResultInterface; use Aws\S3\Exception\S3Exception; use Aws\S3\S3ClientInterface; use Aws\S3\S3ClientTrait; use GuzzleHttp\Psr7\Response; use Throwable; use function GuzzleHttp\Promise\promise_for; /** * @codeCoverageIgnore */ class S3ClientStub implements S3ClientInterface { use S3ClientTrait; /** * @var S3ClientInterface */ private $actualClient; /** * @var S3Exception[] */ private $stagedExceptions = []; /** * @var ResultInterface[] */ private $stagedResult = []; /** * @var Throwable|null */ private $exceptionForUpload = null; public function __construct(S3ClientInterface $client) { return $this->actualClient = $client; } public function throwDuringUpload(Throwable $throwable): void { $this->exceptionForUpload = $throwable; } public function upload($bucket, $key, $body, $acl = 'private', array $options = []) { if ($this->exceptionForUpload instanceof Throwable) { $throwable = $this->exceptionForUpload; $this->exceptionForUpload = null; throw $throwable; } return $this->actualClient->upload($bucket, $key, $body, $acl, $options); } public function failOnNextCopy(): void { $this->throwExceptionWhenExecutingCommand('CopyObject'); } public function throwExceptionWhenExecutingCommand(string $commandName, ?S3Exception $exception = null): void { $this->stagedExceptions[$commandName] = $exception ?? new S3Exception($commandName, new Command($commandName)); } public function throw500ExceptionWhenExecutingCommand(string $commandName): void { $response = new Response(500); $exception = new S3Exception($commandName, new Command($commandName), compact('response')); $this->throwExceptionWhenExecutingCommand($commandName, $exception); } public function stageResultForCommand(string $commandName, ResultInterface $result): void { $this->stagedResult[$commandName] = $result; } public function execute(CommandInterface $command) { return $this->executeAsync($command)->wait(); } public function getCommand($name, array $args = []) { return $this->actualClient->getCommand($name, $args); } public function getHandlerList() { return $this->actualClient->getHandlerList(); } public function getIterator($name, array $args = []) { return $this->actualClient->getIterator($name, $args); } public function __call($name, array $arguments) { return $this->actualClient->__call($name, $arguments); } public function executeAsync(CommandInterface $command) { $name = $command->getName(); if (array_key_exists($name, $this->stagedExceptions)) { $exception = $this->stagedExceptions[$name]; unset($this->stagedExceptions[$name]); throw $exception; } if (array_key_exists($name, $this->stagedResult)) { $result = $this->stagedResult[$name]; unset($this->stagedResult[$name]); return promise_for($result); } return $this->actualClient->executeAsync($command); } public function getCredentials() { return $this->actualClient->getCredentials(); } public function getRegion() { return $this->actualClient->getRegion(); } public function getEndpoint() { return $this->actualClient->getEndpoint(); } public function getApi() { return $this->actualClient->getApi(); } public function getConfig($option = null) { return $this->actualClient->getConfig($option); } public function getPaginator($name, array $args = []) { return $this->actualClient->getPaginator($name, $args); } public function waitUntil($name, array $args = []) { $this->actualClient->waitUntil($name, $args); } public function getWaiter($name, array $args = []) { return $this->actualClient->getWaiter($name, $args); } public function createPresignedRequest(CommandInterface $command, $expires, array $options = []) { return $this->actualClient->createPresignedRequest($command, $expires, $options); } public function getObjectUrl($bucket, $key) { return $this->actualClient->getObjectUrl($bucket, $key); } }