]> git.mxchange.org Git - friendica.git/commitdiff
Move dependency-less Page->exit to Core\System::echoResponse
authorHypolite Petovan <hypolite@mrpetovan.com>
Thu, 21 Sep 2023 13:17:38 +0000 (09:17 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sun, 24 Sep 2023 11:08:14 +0000 (07:08 -0400)
- The method doesn't actually exit
- Fix a bug with header handling in System::echoResponse with numerical key header strings
  - Adding a full-string header with ICanCreateResponses->setHeader was resulting in a wrong header named after the numerical key

src/App.php
src/App/Page.php
src/Core/System.php
src/Module/Media/Attachment/Upload.php
src/Module/Media/Photo/Upload.php

index 10fee0cfc313ba6b38aaeade61a279938f8169b2..a708abe649e9f3a0e22c74746a6c2a8a4c430bc5 100644 (file)
@@ -716,7 +716,7 @@ class App
                        }
 
                        $this->logger->debug('Request processed sucessfully', ['response' => $response->getStatusCode(), 'address' => $_SERVER['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $_SERVER['HTTP_REFERER'] ?? '', 'user-agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
-                       $page->exit($response);
+                       System::echoResponse($response);
                } catch (HTTPException $e) {
                        $this->logger->debug('Request processed with exception', ['response' => $e->getCode(), 'address' => $_SERVER['REMOTE_ADDR'] ?? '', 'request' => $requeststring, 'referer' => $_SERVER['HTTP_REFERER'] ?? '', 'user-agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
                        $httpException->rawContent($e);
index e369d482e83610617105b9718b46bd2bca9d9d92..364da32eb07bc35b2cd29a80228968586ce5b483 100644 (file)
@@ -401,36 +401,6 @@ class Page implements ArrayAccess
                $this->footerScripts[] = trim($url, '/');
        }
 
-       /**
-        * Directly exit with the current response (include setting all headers)
-        *
-        * @param ResponseInterface $response
-        */
-       public function exit(ResponseInterface $response)
-       {
-               header(sprintf("HTTP/%s %s %s",
-                       $response->getProtocolVersion(),
-                       $response->getStatusCode(),
-                       $response->getReasonPhrase())
-               );
-
-               foreach ($response->getHeaders() as $key => $header) {
-                       if (is_array($header)) {
-                               $header_str = implode(',', $header);
-                       } else {
-                               $header_str = $header;
-                       }
-
-                       if (empty($key)) {
-                               header($header_str);
-                       } else {
-                               header("$key: $header_str");
-                       }
-               }
-
-               echo $response->getBody();
-       }
-
        /**
         * Executes the creation of the current page and prints it to the screen
         *
index f1554834632b3fbcb764e336593b93b4ce4faaa8..5c2cd8dc12a952aa15e10877a5facd970cf71619 100644 (file)
@@ -32,6 +32,7 @@ use Friendica\Network\HTTPException\MovedPermanentlyException;
 use Friendica\Network\HTTPException\TemporaryRedirectException;
 use Friendica\Util\BasePath;
 use Friendica\Util\XML;
+use Psr\Http\Message\ResponseInterface;
 use Psr\Log\LoggerInterface;
 
 /**
@@ -274,6 +275,36 @@ class System
                return implode(', ', $callstack2);
        }
 
+       /**
+        * Display current response, including setting all headers
+        *
+        * @param ResponseInterface $response
+        */
+       public static function echoResponse(ResponseInterface $response)
+       {
+               header(sprintf("HTTP/%s %s %s",
+                               $response->getProtocolVersion(),
+                               $response->getStatusCode(),
+                               $response->getReasonPhrase())
+               );
+
+               foreach ($response->getHeaders() as $key => $header) {
+                       if (is_array($header)) {
+                               $header_str = implode(',', $header);
+                       } else {
+                               $header_str = $header;
+                       }
+
+                       if (is_int($key)) {
+                               header($header_str);
+                       } else {
+                               header("$key: $header_str");
+                       }
+               }
+
+               echo $response->getBody();
+       }
+
        /**
         * Generic XML return
         * Outputs a basic dfrn XML status structure to STDOUT, with a <status> variable
@@ -297,7 +328,7 @@ class System
 
                DI::apiResponse()->setType(Response::TYPE_XML);
                DI::apiResponse()->addContent(XML::fromArray(['result' => $result]));
-               DI::page()->exit(DI::apiResponse()->generate());
+               self::echoResponse(DI::apiResponse()->generate());
 
                self::exit();
        }
@@ -317,7 +348,7 @@ class System
                }
                DI::apiResponse()->setStatus($httpCode, $message);
                DI::apiResponse()->addContent($content);
-               DI::page()->exit(DI::apiResponse()->generate());
+               self::echoResponse(DI::apiResponse()->generate());
 
                self::exit();
        }
@@ -334,7 +365,7 @@ class System
        public static function httpExit(string $content, string $type = Response::TYPE_HTML, ?string $content_type = null) {
                DI::apiResponse()->setType($type, $content_type);
                DI::apiResponse()->addContent($content);
-               DI::page()->exit(DI::apiResponse()->generate());
+               self::echoResponse(DI::apiResponse()->generate());
 
                self::exit();
        }
@@ -363,7 +394,7 @@ class System
        public static function jsonExit($content, $content_type = 'application/json', int $options = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) {
                DI::apiResponse()->setType(Response::TYPE_JSON, $content_type);
                DI::apiResponse()->addContent(json_encode($content, $options));
-               DI::page()->exit(DI::apiResponse()->generate());
+               self::echoResponse(DI::apiResponse()->generate());
 
                self::exit();
        }
index 50c20b36410237415ca24e75331c249e93137075..f6b690343697409441196768719388bde5d012a3 100644 (file)
@@ -150,7 +150,7 @@ class Upload extends \Friendica\BaseModule
                        $this->response->addContent($message);
                }
 
-               $this->page->exit($this->response->generate());
+               System::echoResponse($this->response->generate());
                System::exit();
        }
 }
index e53ca35b86c404be83e616371cd3d1d7e8c25a71..d5c15ea5bda751073660448397af11dd51fec126 100644 (file)
@@ -207,7 +207,7 @@ class Upload extends \Friendica\BaseModule
                        $this->response->addContent($message);
                }
 
-               $this->page->exit($this->response->generate());
+               System::echoResponse($this->response->generate());
                System::exit();
        }
 }