Skip to content

Commit 0bb97a5

Browse files
author
Dominic Luechinger
committed
Fix issue with endpoint url containing an '?'
If the endpoint looks like this 'customer?action=list' and a query string is passed to executePsr7Endpoint() the resulting uri is broken. Endpoint: /customer?action=list QueryParam: sort=creation_date Expected result: /customer?action=list&sort=creation_date Actual result: /customer?action=list?sort=creation_date ---------------------^------------------
1 parent 4813fb7 commit 0bb97a5

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

Client/Psr7HttplugClient.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ public function executePsr7Endpoint(Psr7HttplugEndpoint $endpoint, string $fetch
4141
{
4242
[$bodyHeaders, $body] = $endpoint->getBody($this->serializer, $this->streamFactory);
4343
$queryString = $endpoint->getQueryString();
44-
$uri = $queryString !== '' ? $endpoint->getUri() . '?' . $queryString : $endpoint->getUri();
44+
$uriGlue = false === strpos($endpoint->getUri(), '?') ? '?' : '&';
45+
$uri = $queryString !== '' ? $endpoint->getUri() . $uriGlue . $queryString : $endpoint->getUri();
4546
$request = $this->messageFactory->createRequest($endpoint->getMethod(), $uri, $endpoint->getHeaders($bodyHeaders), $body);
4647

4748
return $endpoint->parsePSR7Response($this->httpClient->sendRequest($request), $this->serializer, $fetch);

0 commit comments

Comments
 (0)