]> git.mxchange.org Git - friendica.git/commitdiff
Fix redirect url in Guzzle Responses
authorPhilipp <admin@philipp.info>
Thu, 9 Dec 2021 13:59:25 +0000 (14:59 +0100)
committerPhilipp <admin@philipp.info>
Thu, 9 Dec 2021 13:59:25 +0000 (14:59 +0100)
src/Network/HTTPClient/Response/GuzzleResponse.php

index aa92309e5d6adc40246df729534852bb86e67081..722ec5331526bd7fe20b3f616146dd413ceb0bc1 100644 (file)
@@ -23,8 +23,8 @@ namespace Friendica\Network\HTTPClient\Response;
 
 use Friendica\Core\Logger;
 use Friendica\Network\HTTPClient\Capability\ICanHandleHttpResponses;
-use Friendica\Network\HTTPException\NotImplementedException;
 use GuzzleHttp\Psr7\Response;
+use GuzzleHttp\RedirectMiddleware;
 use Psr\Http\Message\ResponseInterface;
 
 /**
@@ -48,6 +48,11 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
         */
        private $error;
 
+       /** @var string  */
+       private $redirectUrl = '';
+       /** @var bool */
+       private $isRedirectUrl = false;
+
        public function __construct(ResponseInterface $response, string $url, $errorNumber = 0, $error = '')
        {
                parent::__construct($response->getStatusCode(), $response->getHeaders(), $response->getBody(), $response->getProtocolVersion(), $response->getReasonPhrase());
@@ -56,6 +61,7 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
                $this->errorNumber = $errorNumber;
 
                $this->checkSuccess();
+               $this->checkRedirect($response);
        }
 
        private function checkSuccess()
@@ -78,6 +84,16 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
                }
        }
 
+       private function checkRedirect(ResponseInterface $response)
+       {
+               $headersRedirect = $response->getHeader(RedirectMiddleware::HISTORY_HEADER) ?? [];
+
+               if (count($headersRedirect) > 0) {
+                       $this->redirectUrl   = $headersRedirect[0];
+                       $this->isRedirectUrl = true;
+               }
+       }
+
        /** {@inheritDoc} */
        public function getReturnCode(): string
        {
@@ -119,16 +135,14 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon
        /** {@inheritDoc} */
        public function getRedirectUrl(): string
        {
-               return $this->url;
+               return $this->redirectUrl;
        }
 
        /** {@inheritDoc}
-        *
-        * @throws NotImplementedException
         */
        public function isRedirectUrl(): bool
        {
-               throw new NotImplementedException();
+               return $this->isRedirectUrl;
        }
 
        /** {@inheritDoc} */