Skip to content

Commit 9de6356

Browse files
author
Christophe BENOIT
committed
added support for amazon sdk v3 alongside v2
1 parent 88c9ab7 commit 9de6356

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

src/DependencyInjection/UecodeQPushExtension.php

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,20 +136,35 @@ private function createAwsClient($config, ContainerBuilder $container, $name)
136136

137137
if (!$container->hasDefinition($service)) {
138138

139-
if (!class_exists('Aws\Common\Aws')) {
139+
$aws2 = class_exists('Aws\Common\Aws');
140+
$aws3 = class_exists('Aws\Sdk');
141+
if (!$aws2 && !$aws3) {
140142
throw new \RuntimeException(
141143
'You must require "aws/aws-sdk-php" to use the AWS provider.'
142144
);
143145
}
144-
145-
$aws = new Definition('Aws\Common\Aws');
146-
$aws->setFactory(['Aws\Common\Aws', 'factory']);
147-
$aws->setArguments([
148-
[
146+
if ($aws2) {
147+
$aws = new Definition('Aws\Common\Aws');
148+
$aws->setFactory(['Aws\Common\Aws', 'factory']);
149+
$args = [
149150
'key' => $config['key'],
150151
'secret' => $config['secret'],
151152
'region' => $config['region']
152-
]
153+
];
154+
} else {
155+
$aws = new Definition('Aws\Sdk');
156+
//$aws->setFactory(['Aws\AwsClient', 'factory']);
157+
$args = [
158+
'credentials' => [
159+
'key' => $config['key'],
160+
'secret' => $config['secret']
161+
],
162+
'region' => $config['region'],
163+
'version' => 'latest'
164+
];
165+
}
166+
$aws->setArguments([
167+
$args
153168
]);
154169

155170
$container->setDefinition($service, $aws)

src/Provider/AwsProvider.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222

2323
namespace Uecode\Bundle\QPushBundle\Provider;
2424

25-
use Aws\Common\Aws;
2625
use Aws\Sns\SnsClient;
2726
use Aws\Sqs\SqsClient;
2827
use Aws\Sqs\Exception\SqsException;
28+
2929
use Doctrine\Common\Cache\Cache;
3030
use Symfony\Bridge\Monolog\Logger;
3131
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -71,10 +71,12 @@ public function __construct($name, array $options, $client, Cache $cache, Logger
7171
{
7272
$this->name = $name;
7373
$this->options = $options;
74-
$this->sqs = $client->get('Sqs');
75-
$this->sns = $client->get('Sns');
7674
$this->cache = $cache;
7775
$this->logger = $logger;
76+
// get() method used for sdk v2, create methods for v3
77+
$useGet = method_exists($client, 'get');
78+
$this->sqs = $useGet ? $this->get('sqs') : $client->createSqs();
79+
$this->sns = $useGet ? $this->get('sns') : $client->createSns();
7880
}
7981

8082
public function getProvider()

0 commit comments

Comments
 (0)