From 16a3b631944e965aed260e4186db5e36c5dc7e25 Mon Sep 17 00:00:00 2001 From: Albin Kerouanton Date: Fri, 2 Jun 2017 14:02:58 +0200 Subject: [PATCH] Add support for aws-sdk-php v2 --- .travis.yml | 1 + composer.json | 2 +- .../Resolver/AwsS3PresignedUrlResolverSpec.php | 12 ------------ .../Resolver/AwsS3PresignedUrlResolver.php | 12 +++++++++++- .../Resolvable/Resolver/AwsS3SetUpTearDownTrait.php | 12 ++++++++++++ 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3344ca8..f9a7bca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ php: before_script: - composer self-update && composer install --prefer-source --no-interaction + - if [[ ${TRAVIS_PHP_VERSION:0:1} == "5" ]]; then composer update --prefer-lowest && composer update knplabs/gaufrette; fi script: - php bin/phpspec run -fpretty --verbose diff --git a/composer.json b/composer.json index 4c222a1..1d85d48 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ "require-dev": { "phpspec/phpspec": "^3.4", "phpunit/phpunit": "~5.5", - "aws/aws-sdk-php": "~3" + "aws/aws-sdk-php": "~2.4|~3" }, "license": "MIT", "authors": [ diff --git a/spec/Resolvable/Resolver/AwsS3PresignedUrlResolverSpec.php b/spec/Resolvable/Resolver/AwsS3PresignedUrlResolverSpec.php index dc61080..c9f782c 100644 --- a/spec/Resolvable/Resolver/AwsS3PresignedUrlResolverSpec.php +++ b/spec/Resolvable/Resolver/AwsS3PresignedUrlResolverSpec.php @@ -26,16 +26,4 @@ function it_is_a_resolver() { $this->shouldImplement(ResolverInterface::class); } - - function it_resolves_object_path_into_presigned_url( - $client, - CommandInterface $command, - RequestInterface $presignedRequest - ) { - $client->getCommand('GetObject', ['Bucket' => 'bucket', 'Key' => 'base/dir/foo.png'])->willReturn($command); - $client->createPresignedRequest($command, Argument::type(\DateTime::class))->willReturn($presignedRequest); - $presignedRequest->getUri()->willReturn('https://amazon'); - - $this->resolve('/foo.png')->shouldReturn('https://amazon'); - } } diff --git a/src/Resolvable/Resolver/AwsS3PresignedUrlResolver.php b/src/Resolvable/Resolver/AwsS3PresignedUrlResolver.php index cd40ad3..907f65b 100644 --- a/src/Resolvable/Resolver/AwsS3PresignedUrlResolver.php +++ b/src/Resolvable/Resolver/AwsS3PresignedUrlResolver.php @@ -45,10 +45,20 @@ public function __construct(S3Client $service, $bucket, $baseDir, \DateTimeInter * * @param string $path * - * @return (string) \Psr\Http\Message\UriInterface + * @return string */ public function resolve($path) { + // For AWS SDK v2 + if ($this->service instanceof \Aws\Common\Client\AbstractClient) { + return $this->service->getObjectUrl( + $this->bucket, + $this->computePath($path), + $this->expiresAt + ); + } + + // For AWS SDK v3 $command = $this->service->getCommand('GetObject', [ 'Bucket' => $this->bucket, 'Key' => $this->computePath($path), diff --git a/tests/Resolvable/Resolver/AwsS3SetUpTearDownTrait.php b/tests/Resolvable/Resolver/AwsS3SetUpTearDownTrait.php index 3fd8807..5810578 100644 --- a/tests/Resolvable/Resolver/AwsS3SetUpTearDownTrait.php +++ b/tests/Resolvable/Resolver/AwsS3SetUpTearDownTrait.php @@ -27,6 +27,18 @@ public function setUp() } $this->bucket = uniqid(getenv('AWS_BUCKET')); + + // For AWS SDK v2 + if (class_exists('Aws\Common\Client\AbstractClient')) { + return $this->client = S3Client::factory([ + 'region' => $region ? $region : 'eu-west-1', + 'version' => '2006-03-01', + 'key' => $key, + 'secret' => $secret, + ]); + } + + // For AWS SDK v3 $this->client = new S3Client([ 'region' => $region ? $region : 'eu-west-1', 'version' => 'latest',