Skip to content

Commit

Permalink
Merge branch '6.3' into 6.4
Browse files Browse the repository at this point in the history
* 6.3:
  append instead of replacing potentially non-existent named-arguments
  [Validator] added missing Polish translation
  add translations for the MacAddress constraint
  remove invalid changelog entry
  Added missing Serbian (sr_Latn) translations
  [Cache][DependencyInjection][Lock][Mailer][Messenger][Notifier][Translation] Url decode username and passwords from `parse_url()` results
  [Security] added missing Albanian translations
  [Validator] Add missing Hungarian translation
  [Serializer] Fix using deserialization path
  [Validator] Add missing hr translation
  • Loading branch information
nicolas-grekas committed Jan 2, 2024
2 parents ec11d98 + faffa89 commit 6d0565b
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions Transport/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,24 +162,24 @@ public function __construct(array $connectionOptions, array $exchangeOptions, ar
*/
public static function fromDsn(#[\SensitiveParameter] string $dsn, array $options = [], AmqpFactory $amqpFactory = null): self
{
if (false === $parsedUrl = parse_url($dsn)) {
if (false === $params = parse_url($dsn)) {
// this is a valid URI that parse_url cannot handle when you want to pass all parameters as options
if (!\in_array($dsn, ['amqp://', 'amqps://'])) {
throw new InvalidArgumentException('The given AMQP DSN is invalid.');
}

$parsedUrl = [];
$params = [];
}

$useAmqps = str_starts_with($dsn, 'amqps://');
$pathParts = isset($parsedUrl['path']) ? explode('/', trim($parsedUrl['path'], '/')) : [];
$pathParts = isset($params['path']) ? explode('/', trim($params['path'], '/')) : [];
$exchangeName = $pathParts[1] ?? 'messages';
parse_str($parsedUrl['query'] ?? '', $parsedQuery);
parse_str($params['query'] ?? '', $parsedQuery);
$port = $useAmqps ? 5671 : 5672;

$amqpOptions = array_replace_recursive([
'host' => $parsedUrl['host'] ?? 'localhost',
'port' => $parsedUrl['port'] ?? $port,
'host' => $params['host'] ?? 'localhost',
'port' => $params['port'] ?? $port,
'vhost' => isset($pathParts[0]) ? urldecode($pathParts[0]) : '/',
'exchange' => [
'name' => $exchangeName,
Expand All @@ -188,12 +188,12 @@ public static function fromDsn(#[\SensitiveParameter] string $dsn, array $option

self::validateOptions($amqpOptions);

if (isset($parsedUrl['user'])) {
$amqpOptions['login'] = urldecode($parsedUrl['user']);
if (isset($params['user'])) {
$amqpOptions['login'] = rawurldecode($params['user']);
}

if (isset($parsedUrl['pass'])) {
$amqpOptions['password'] = urldecode($parsedUrl['pass']);
if (isset($params['pass'])) {
$amqpOptions['password'] = rawurldecode($params['pass']);
}

if (!isset($amqpOptions['queues'])) {
Expand Down

0 comments on commit 6d0565b

Please sign in to comment.