Skip to content

Commit a1a6e79

Browse files
Simplify
1 parent 48b3af7 commit a1a6e79

File tree

10 files changed

+39
-150
lines changed

10 files changed

+39
-150
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
use Symfony\Component\Lock\Lock;
3333
use Symfony\Component\Lock\Store\SemaphoreStore;
3434
use Symfony\Component\Mailer\Mailer;
35-
use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsSerializer;
3635
use Symfony\Component\Messenger\MessageBusInterface;
3736
use Symfony\Component\Notifier\Notifier;
3837
use Symfony\Component\PropertyAccess\PropertyAccessor;
@@ -1333,10 +1332,6 @@ private function addWebLinkSection(ArrayNodeDefinition $rootNode, callable $enab
13331332

13341333
private function addMessengerSection(ArrayNodeDefinition $rootNode, callable $enableIfStandalone)
13351334
{
1336-
$defaultSerializer = class_exists(AmazonSqsSerializer::class)
1337-
? 'messenger.transport.amazon_php_serializer'
1338-
: 'messenger.transport.native_php_serializer';
1339-
13401335
$rootNode
13411336
->children()
13421337
->arrayNode('messenger')
@@ -1400,7 +1395,7 @@ function ($a) {
14001395
->addDefaultsIfNotSet()
14011396
->children()
14021397
->scalarNode('default_serializer')
1403-
->defaultValue($defaultSerializer)
1398+
->defaultValue('messenger.transport.native_php_serializer')
14041399
->info('Service id to use as the default serializer for the transports.')
14051400
->end()
14061401
->arrayNode('symfony_serializer')

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1313

1414
use Symfony\Component\DependencyInjection\ServiceLocator;
15-
use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsSerializer;
1615
use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsTransportFactory;
1716
use Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpTransportFactory;
1817
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\BeanstalkdTransportFactory;
@@ -76,8 +75,6 @@
7675

7776
->set('messenger.transport.native_php_serializer', PhpSerializer::class)
7877

79-
->set('messenger.transport.amazon_php_serializer', AmazonSqsSerializer::class)
80-
8178
// Middleware
8279
->set('messenger.middleware.handle_message', HandleMessageMiddleware::class)
8380
->abstract()

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
use Symfony\Component\HttpClient\HttpClient;
2323
use Symfony\Component\Lock\Store\SemaphoreStore;
2424
use Symfony\Component\Mailer\Mailer;
25-
use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsSerializer;
2625
use Symfony\Component\Messenger\MessageBusInterface;
2726
use Symfony\Component\Notifier\Notifier;
2827
use Symfony\Component\RateLimiter\Policy\TokenBucketLimiter;
@@ -560,9 +559,7 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
560559
'transports' => [],
561560
'failure_transport' => null,
562561
'serializer' => [
563-
'default_serializer' => class_exists(AmazonSqsSerializer::class)
564-
? 'messenger.transport.amazon_php_serializer'
565-
: 'messenger.transport.native_php_serializer',
562+
'default_serializer' => 'messenger.transport.native_php_serializer',
566563
'symfony_serializer' => [
567564
'format' => 'json',
568565
'context' => [],

src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSenderTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,19 @@ public function testSendWithAmazonSqsXrayTraceHeaderStamp()
7272
$sender = new AmazonSqsSender($connection, $serializer);
7373
$sender->send($envelope);
7474
}
75+
76+
public function testSendEncodeBodyToRespectAmazonRequirements()
77+
{
78+
$envelope = new Envelope(new DummyMessage('Oy'));
79+
$encoded = ['body' => "\x7", 'headers' => ['type' => DummyMessage::class]];
80+
81+
$connection = $this->createMock(Connection::class);
82+
$connection->expects($this->once())->method('send')->with(base64_encode($encoded['body']), $encoded['headers']);
83+
84+
$serializer = $this->createMock(SerializerInterface::class);
85+
$serializer->method('encode')->with($envelope)->willReturn($encoded);
86+
87+
$sender = new AmazonSqsSender($connection, $serializer);
88+
$sender->send($envelope);
89+
}
7590
}

src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSerializerTest.php

Lines changed: 0 additions & 106 deletions
This file was deleted.

src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsReceiver.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Symfony\Component\Messenger\Exception\TransportException;
1919
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
2020
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
21+
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
2122
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2223

2324
/**
@@ -31,7 +32,7 @@ class AmazonSqsReceiver implements ReceiverInterface, MessageCountAwareInterface
3132
public function __construct(Connection $connection, ?SerializerInterface $serializer = null)
3233
{
3334
$this->connection = $connection;
34-
$this->serializer = $serializer ?? new AmazonSqsSerializer();
35+
$this->serializer = $serializer ?? new PhpSerializer();
3536
}
3637

3738
/**

src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsSender.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public function __construct(Connection $connection, SerializerInterface $seriali
3838
public function send(Envelope $envelope): Envelope
3939
{
4040
$encodedMessage = $this->serializer->encode($envelope);
41+
$encodedMessage = $this->complyWithAmazonSqsRequirements($encodedMessage);
4142

4243
/** @var DelayStamp|null $delayStamp */
4344
$delayStamp = $envelope->last(DelayStamp::class);
@@ -75,4 +76,20 @@ public function send(Envelope $envelope): Envelope
7576

7677
return $envelope;
7778
}
79+
80+
/**
81+
* @see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html
82+
*
83+
* @param array{body: string, headers?: array<string>} $encodedMessage
84+
*
85+
* @return array{body: string, headers?: array<string>}
86+
*/
87+
private function complyWithAmazonSqsRequirements(array $encodedMessage): array
88+
{
89+
if (preg_match('/[^\x20-\x{D7FF}\xA\xD\x9\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]/u', $encodedMessage['body'])) {
90+
$encodedMessage['body'] = base64_encode($encodedMessage['body']);
91+
}
92+
93+
return $encodedMessage;
94+
}
7895
}

src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsSerializer.php

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/AmazonSqsTransport.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
1818
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
1919
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
20+
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
2021
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
2122
use Symfony\Component\Messenger\Transport\SetupableTransportInterface;
2223
use Symfony\Component\Messenger\Transport\TransportInterface;
@@ -35,7 +36,7 @@ class AmazonSqsTransport implements TransportInterface, SetupableTransportInterf
3536
public function __construct(Connection $connection, ?SerializerInterface $serializer = null, ?ReceiverInterface $receiver = null, ?SenderInterface $sender = null)
3637
{
3738
$this->connection = $connection;
38-
$this->serializer = $serializer ?? new AmazonSqsSerializer();
39+
$this->serializer = $serializer ?? new PhpSerializer();
3940
$this->receiver = $receiver;
4041
$this->sender = $sender;
4142
}

src/Symfony/Component/Messenger/Bridge/AmazonSqs/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"php": ">=7.2.5",
2020
"async-aws/core": "^1.5",
2121
"async-aws/sqs": "^1.0|^2.0",
22-
"symfony/messenger": "^4.4.19|^5.0|^6.0",
22+
"symfony/messenger": "^4.3|^5.0|^6.0",
2323
"symfony/service-contracts": "^1.1|^2|^3",
2424
"psr/log": "^1|^2|^3"
2525
},

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy