From 65ca164487af3890affe224e14b090cc654a2bd0 Mon Sep 17 00:00:00 2001 From: Philipp Date: Fri, 20 Aug 2021 20:05:41 +0200 Subject: [PATCH] A lot of Fixings --- src/Content/Text/BBCode.php | 4 ++-- src/Model/Post/Link.php | 2 +- src/Model/Post/Media.php | 4 ++-- src/Network/GuzzleResponse.php | 6 ++++++ src/Network/HTTPRequest.php | 7 +------ src/Network/Probe.php | 7 +------ src/Util/ParseUrl.php | 11 +++-------- 7 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index cd433bdbb8..f52a2137da 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1195,7 +1195,7 @@ class BBCode if (is_null($text)) { $curlResult = DI::httpRequest()->head($match[1], ['timeout' => DI::config()->get('system', 'xrd_timeout')]); if ($curlResult->isSuccess()) { - $mimetype = $curlResult->getHeader('Content-Type'); + $mimetype = $curlResult->getHeader('Content-Type')[0] ?? ''; } else { $mimetype = ''; } @@ -1266,7 +1266,7 @@ class BBCode $curlResult = DI::httpRequest()->head($match[1], ['timeout' => DI::config()->get('system', 'xrd_timeout')]); if ($curlResult->isSuccess()) { - $mimetype = $curlResult->getHeader('Content-Type'); + $mimetype = $curlResult->getHeader('Content-Type')[0] ?? ''; } else { $mimetype = ''; } diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index 64840a9c95..edd3411624 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -90,7 +90,7 @@ class Link $curlResult = DI::httpRequest()->head($url, ['timeout' => $timeout]); if ($curlResult->isSuccess()) { if (empty($media['mimetype'])) { - return $curlResult->getHeader('Content-Type'); + return $curlResult->getHeader('Content-Type')[0] ?? ''; } } return ''; diff --git a/src/Model/Post/Media.php b/src/Model/Post/Media.php index fae71a9536..c57b1cabeb 100644 --- a/src/Model/Post/Media.php +++ b/src/Model/Post/Media.php @@ -170,10 +170,10 @@ class Media $curlResult = DI::httpRequest()->head($media['url'], ['timeout' => $timeout]); if ($curlResult->isSuccess()) { if (empty($media['mimetype'])) { - $media['mimetype'] = $curlResult->getHeader('Content-Type'); + $media['mimetype'] = $curlResult->getHeader('Content-Type')[0] ?? ''; } if (empty($media['size'])) { - $media['size'] = (int)$curlResult->getHeader('Content-Length'); + $media['size'] = (int)$curlResult->getHeader('Content-Length')[0] ?? 0; } } else { Logger::notice('Could not fetch head', ['media' => $media]); diff --git a/src/Network/GuzzleResponse.php b/src/Network/GuzzleResponse.php index b1bbaa9653..1bb2ee4c5e 100644 --- a/src/Network/GuzzleResponse.php +++ b/src/Network/GuzzleResponse.php @@ -145,4 +145,10 @@ class GuzzleResponse extends Response implements IHTTPResult, ResponseInterface { return $this->isTimeout; } + + /// @todo - fix mismatching use of "getBody()" as string here and parent "getBody()" as streaminterface + public function getBody() + { + return parent::getBody()->getContents(); + } } diff --git a/src/Network/HTTPRequest.php b/src/Network/HTTPRequest.php index e68c0a8f4b..18c060fc54 100644 --- a/src/Network/HTTPRequest.php +++ b/src/Network/HTTPRequest.php @@ -72,7 +72,7 @@ class HTTPRequest implements IHTTPRequest /** * {@inheritDoc} */ - public function get(string $url, bool $binary = false, array $opts = []) + public function get(string $url, array $opts = []) { $this->profiler->startRecording('network'); @@ -193,10 +193,6 @@ class HTTPRequest implements IHTTPRequest $curlOptions[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; } - if ($binary) { - $curlOptions[CURLOPT_BINARYTRANSFER] = 1; - } - $logger = $this->logger; $onRedirect = function( @@ -223,7 +219,6 @@ class HTTPRequest implements IHTTPRequest 'referer' => true, ], 'on_headers' => $onHeaders, - 'sink' => tempnam(get_temppath(), 'guzzle'), 'curl' => $curlOptions ]); diff --git a/src/Network/Probe.php b/src/Network/Probe.php index c547afcd4d..4cacfedf40 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -424,16 +424,11 @@ class Probe */ private static function getHideStatus($url) { - $curlResult = DI::httpRequest()->get($url, false, ['content_length' => 1000000]); + $curlResult = DI::httpRequest()->get($url, ['content_length' => 1000000]); if (!$curlResult->isSuccess()) { return false; } - // If the file is too large then exit - if (($curlResult->getInfo()['download_content_length'] ?? 0) > 1000000) { - return false; - } - // If it isn't a HTML file then exit if (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) { return false; diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php index d95897b1d0..915a143a04 100644 --- a/src/Util/ParseUrl.php +++ b/src/Util/ParseUrl.php @@ -63,7 +63,7 @@ class ParseUrl return []; } - $contenttype = $curlResult->getHeader('Content-Type'); + $contenttype = $curlResult->getHeader('Content-Type')[0] ?? ''; if (empty($contenttype)) { return []; } @@ -213,19 +213,14 @@ class ParseUrl return $siteinfo; } - $curlResult = DI::httpRequest()->get($url, false, ['content_length' => 1000000]); + $curlResult = DI::httpRequest()->get($url, ['content_length' => 1000000]); if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { return $siteinfo; } $siteinfo['expires'] = DateTimeFormat::utc(self::DEFAULT_EXPIRATION_SUCCESS); - // If the file is too large then exit - if (($curlResult->getInfo()['download_content_length'] ?? 0) > 1000000) { - return $siteinfo; - } - - if ($cacheControlHeader = $curlResult->getHeader('Cache-Control')) { + if ($cacheControlHeader = $curlResult->getHeader('Cache-Control')[0] ?? '') { if (preg_match('/max-age=([0-9]+)/i', $cacheControlHeader, $matches)) { $maxAge = max(86400, (int)array_pop($matches)); $siteinfo['expires'] = DateTimeFormat::utc("now + $maxAge seconds");