From e8c256bcffed760d91ae520112b16f5af479c716 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 12 Jan 2024 01:12:48 -0500 Subject: [PATCH] [Composer] Bump guzzlehttp/guzzle to version 7 to suppress deprecation notices - Bump divineomega/password_exposed to version 3 to remove dependency on Guzzle version 6 - Add new ICanHandleHttpResponses->getBodyString method to solve inheritance mismatch with GuzzleHttp\Psr7\ResponseInterface->getBody return type --- composer.json | 4 +- composer.lock | 625 ++++++++++-------- src/Contact/Avatar.php | 2 +- src/Content/OEmbed.php | 2 +- src/Core/Logger/Handler/ErrorHandler.php | 2 +- src/Core/Search.php | 2 +- src/Core/Storage/Type/ExternalResource.php | 4 +- src/Core/System.php | 2 +- src/Model/APContact.php | 4 +- src/Model/Contact.php | 2 +- src/Model/GServer.php | 72 +- src/Model/Photo.php | 4 +- src/Model/Post/Link.php | 2 +- src/Model/User.php | 6 +- src/Module/Contact/MatchInterests.php | 2 +- src/Module/Magic.php | 2 +- src/Module/OStatus/PubSubHubBub.php | 2 +- src/Module/OStatus/Subscribe.php | 2 +- src/Module/Proxy.php | 2 +- .../Capability/ICanHandleHttpResponses.php | 3 +- src/Network/HTTPClient/Client/HttpClient.php | 2 +- .../HTTPClient/Response/CurlResult.php | 2 +- .../HTTPClient/Response/GuzzleResponse.php | 3 +- src/Network/Probe.php | 34 +- src/Protocol/ActivityPub/Processor.php | 4 +- src/Protocol/DFRN.php | 2 +- src/Protocol/OStatus.php | 12 +- src/Security/ExAuth.php | 2 +- src/Util/HTTPSignature.php | 4 +- src/Util/ParseUrl.php | 4 +- src/Worker/CheckRelMeProfileLink.php | 2 +- src/Worker/OnePoll.php | 2 +- src/Worker/UpdateServerPeers.php | 4 +- .../HTTPClient/Response/CurlResultTest.php | 8 +- 34 files changed, 450 insertions(+), 381 deletions(-) diff --git a/composer.json b/composer.json index 21603c7b27..730c24bafa 100644 --- a/composer.json +++ b/composer.json @@ -29,12 +29,12 @@ "ext-xml": "*", "asika/simple-console": "^1.0", "bacon/bacon-qr-code": "^2.0.0", - "divineomega/password_exposed": "^2.8", + "divineomega/password_exposed": "^3", "enyo/dropzone": "^5.9", "ezyang/htmlpurifier": "^4.7", "friendica/json-ld": "^1.0", "geekwright/po": "^2.0", - "guzzlehttp/guzzle": "^6.5", + "guzzlehttp/guzzle": "^7", "guzzlehttp/oauth-subscriber": "^0.6", "kornrunner/blurhash": "^1.2", "league/html-to-markdown": "^4.8", diff --git a/composer.lock b/composer.lock index a541913811..a27b09497d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "082b16e2c88895f1a03d5b0ffe678ba7", + "content-hash": "356019e5d0c92aae938f5292dd0fd103", "packages": [ { "name": "asika/simple-console", @@ -507,38 +507,101 @@ }, { "name": "divineomega/password_exposed", - "version": "v2.8.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/DivineOmega/password_exposed.git", - "reference": "908ed8e62ef95411bd0f866e29c69cef2bbca880" + "reference": "327f93ee5cab54622077bcae721412b55be16720" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DivineOmega/password_exposed/zipball/908ed8e62ef95411bd0f866e29c69cef2bbca880", - "reference": "908ed8e62ef95411bd0f866e29c69cef2bbca880", + "url": "https://api.github.com/repos/DivineOmega/password_exposed/zipball/327f93ee5cab54622077bcae721412b55be16720", + "reference": "327f93ee5cab54622077bcae721412b55be16720", "shasum": "" }, "require": { "divineomega/do-file-cache-psr-6": "^2.0", - "guzzlehttp/guzzle": "^6.3", - "paragonie/certainty": "^1|^2", - "php": ">=5.6" + "divineomega/psr-18-guzzle-adapter": "^1.0", + "nyholm/psr7": "^1.0", + "paragonie/certainty": "^2.4", + "php": "^7.1||^8.0", + "php-http/discovery": "^1.6", + "psr/cache": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/http-message": "^1.0", + "psr/http-message-implementation": "^1.0" }, "require-dev": { "fzaninotto/faker": "^1.7", + "kriswallsmith/buzz": "^1.0", "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^6.5", - "vimeo/psalm": "^1" + "phpunit/phpunit": "^7.0||^8.0", + "symfony/cache": "^4.2.12", + "vimeo/psalm": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "files": [ + "src/PasswordExposedFunction.php" + ], + "psr-4": { + "DivineOmega\\PasswordExposed\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-only" + ], + "authors": [ + { + "name": "Jordan Hall", + "email": "jordan@hall05.co.uk" + }, + { + "name": "Contributors", + "homepage": "https://github.com/DivineOmega/password_exposed/graphs/contributors" + } + ], + "description": "This PHP package provides a `password_exposed` helper function, that uses the haveibeenpwned.com API to check if a password has been exposed in a data breach.", + "homepage": "https://github.com/DivineOmega/password_exposed", + "funding": [ + { + "url": "https://github.com/DivineOmega", + "type": "github" + } + ], + "time": "2021-04-20T09:34:23+00:00" + }, + { + "name": "divineomega/psr-18-guzzle-adapter", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/DivineOmega/psr-18-guzzle-adapter.git", + "reference": "a2bdcddd4d4a17aac460e58d1e064e6bd2de5e57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DivineOmega/psr-18-guzzle-adapter/zipball/a2bdcddd4d4a17aac460e58d1e064e6bd2de5e57", + "reference": "a2bdcddd4d4a17aac460e58d1e064e6bd2de5e57", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.3||^7.0", + "php": "^7.1||^8.0", + "psr/http-client": "^1.0" }, "type": "library", "autoload": { "psr-4": { - "DivineOmega\\PasswordExposed\\": "src/" - }, - "files": [ - "src/PasswordExposedFunction.php" - ] + "DivineOmega\\Psr18GuzzleAdapter\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -550,8 +613,14 @@ "email": "jordan@hall05.co.uk" } ], - "description": "This PHP package provides a `password_exposed` helper function, that uses the haveibeenpwned.com API to check if a password has been exposed in a data breach.", - "time": "2019-01-25T12:00:28+00:00" + "description": "PSR-18 adapter for the Guzzle HTTP client", + "funding": [ + { + "url": "https://github.com/DivineOmega", + "type": "github" + } + ], + "time": "2021-04-20T08:50:57+00:00" }, { "name": "enyo/dropzone", @@ -871,37 +940,47 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.8", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -954,13 +1033,14 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], @@ -978,7 +1058,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:07+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/oauth-subscriber", @@ -1037,29 +1117,33 @@ }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -1108,42 +1192,48 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.9.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b", - "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -1182,6 +1272,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -1209,7 +1304,7 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:00:37+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "kornrunner/blurhash", @@ -2316,11 +2411,11 @@ }, { "name": "npm-asset/moment", - "version": "2.29.4", + "version": "2.30.1", "dist": { "type": "tar", - "url": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "shasum": "3dbe052889fe7c1b2ed966fcb3a77328964ef108" + "url": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "shasum": "f8c91c07b7a786e30c59926df530b4eac96974ae" }, "type": "npm-asset-library", "extra": { @@ -2394,7 +2489,7 @@ "time", "validate" ], - "time": "2022-07-06T16:01:32+00:00" + "time": "2023-12-27T10:38:43+00:00" }, { "name": "npm-asset/perfect-scrollbar", @@ -2680,6 +2775,80 @@ ], "time": "2018-01-24T10:49:39+00:00" }, + { + "name": "nyholm/psr7", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2023-11-13T09:31:12+00:00" + }, { "name": "paragonie/certainty", "version": "v2.8.2", @@ -3083,17 +3252,91 @@ "time": "2018-01-25T20:47:17+00:00" }, { - "name": "phpseclib/phpseclib", - "version": "3.0.34", + "name": "php-http/discovery", + "version": "1.19.2", "source": { "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a" + "url": "https://github.com/php-http/discovery.git", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a", + "url": "https://api.github.com/repos/php-http/discovery/zipball/61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "symfony/phpunit-bridge": "^6.2" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "time": "2023-11-30T16:49:05+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.35", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", "shasum": "" }, "require": { @@ -3186,7 +3429,7 @@ "type": "tidelift" } ], - "time": "2023-11-27T11:13:31+00:00" + "time": "2023-12-29T01:59:53+00:00" }, { "name": "pragmarx/google2fa", @@ -3922,128 +4165,35 @@ "time": "2020-11-03T09:10:25+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-26T09:30:37+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-intl": "For best performance" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "2.5-dev" }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4060,16 +4210,8 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], "funding": [ { "url": "https://symfony.com/sponsor", @@ -4084,7 +4226,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/polyfill-php56", @@ -4151,79 +4293,6 @@ ], "time": "2020-10-23T14:02:19+00:00" }, - { - "name": "symfony/polyfill-php72", - "version": "v1.28.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-26T09:26:14+00:00" - }, { "name": "ua-parser/uap-php", "version": "v3.9.14", @@ -5024,25 +5093,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.18.0", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -5050,7 +5121,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -5072,7 +5143,7 @@ "parser", "php" ], - "time": "2023-12-10T21:03:43+00:00" + "time": "2024-01-07T17:17:35+00:00" }, { "name": "phar-io/manifest", @@ -5179,23 +5250,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -5248,7 +5319,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5800,20 +5871,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -5849,7 +5920,7 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", @@ -6107,20 +6178,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -6156,7 +6227,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", diff --git a/src/Contact/Avatar.php b/src/Contact/Avatar.php index 28d277a1a2..371e645232 100644 --- a/src/Contact/Avatar.php +++ b/src/Contact/Avatar.php @@ -80,7 +80,7 @@ class Avatar return $fields; } - $img_str = $fetchResult->getBody(); + $img_str = $fetchResult->getBodyString(); if (empty($img_str)) { Logger::debug('Avatar is invalid', ['avatar' => $avatar]); return $fields; diff --git a/src/Content/OEmbed.php b/src/Content/OEmbed.php index 8a4634539a..674728036b 100644 --- a/src/Content/OEmbed.php +++ b/src/Content/OEmbed.php @@ -120,7 +120,7 @@ class OEmbed ['https://www.youtube.com/', 'https://player.vimeo.com/'], $href); $result = DI::httpClient()->fetchFull($href . '&maxwidth=' . $a->getThemeInfoValue('videowidth')); if ($result->getReturnCode() === 200) { - $json_string = $result->getBody(); + $json_string = $result->getBodyString(); break; } } diff --git a/src/Core/Logger/Handler/ErrorHandler.php b/src/Core/Logger/Handler/ErrorHandler.php index f08344b4ee..ab959bbb17 100644 --- a/src/Core/Logger/Handler/ErrorHandler.php +++ b/src/Core/Logger/Handler/ErrorHandler.php @@ -263,7 +263,7 @@ class ErrorHandler public function handleError(int $code, string $message, string $file = '', int $line = 0, ?array $context = []): bool { if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) { - return false; + return true; } // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries diff --git a/src/Core/Search.php b/src/Core/Search.php index d59febc8a8..c0e39fcea2 100644 --- a/src/Core/Search.php +++ b/src/Core/Search.php @@ -234,7 +234,7 @@ class Search $p = $page > 1 ? 'p=' . $page : ''; $curlResult = DI::httpClient()->get(self::getGlobalDirectory() . '/search/people?' . $p . '&q=' . urlencode($search), HttpClientAccept::JSON); if ($curlResult->isSuccess()) { - $searchResult = json_decode($curlResult->getBody(), true); + $searchResult = json_decode($curlResult->getBodyString(), true); if (!empty($searchResult['profiles'])) { // Converting Directory Search results into contact-looking records $return = array_map(function ($result) { diff --git a/src/Core/Storage/Type/ExternalResource.php b/src/Core/Storage/Type/ExternalResource.php index 6e04edde17..ee1e90f82b 100644 --- a/src/Core/Storage/Type/ExternalResource.php +++ b/src/Core/Storage/Type/ExternalResource.php @@ -70,12 +70,12 @@ class ExternalResource implements ICanReadFromStorage } if (!empty($fetchResult) && $fetchResult->isSuccess()) { $this->logger->debug('Got picture', ['Content-Type' => $fetchResult->getHeader('Content-Type'), 'uid' => $data->uid, 'url' => $data->url]); - return $fetchResult->getBody(); + return $fetchResult->getBodyString(); } else { if (empty($fetchResult)) { throw new ReferenceStorageException(sprintf('External resource failed to get %s', $reference)); } else { - throw new ReferenceStorageException(sprintf('External resource failed to get %s', $reference), $fetchResult->getReturnCode(), new Exception($fetchResult->getBody())); + throw new ReferenceStorageException(sprintf('External resource failed to get %s', $reference), $fetchResult->getReturnCode(), new Exception($fetchResult->getBodyString())); } } } diff --git a/src/Core/System.php b/src/Core/System.php index 0479053530..df8cb9377e 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -230,7 +230,7 @@ class System * @param int $offset How many calls to shave off the top of the stack, for example if * this is called from a centralized method that isn't relevant to the callstack * @param bool $full If enabled, the callstack is not compacted - * @param array $exclude + * @param array $exclude * @return string */ public static function callstack(int $depth = 4, int $offset = 0, bool $full = false, array $exclude = []): string diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 6f1f7d3834..032dd37f39 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -198,11 +198,11 @@ class APContact try { $curlResult = HTTPSignature::fetchRaw($url); - $failed = empty($curlResult) || empty($curlResult->getBody()) || + $failed = empty($curlResult) || empty($curlResult->getBodyString()) || (!$curlResult->isSuccess() && ($curlResult->getReturnCode() != 410)); if (!$failed) { - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); $failed = empty($data) || !is_array($data); } diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 8b9ed8c1ea..4e4a41e7e3 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2300,7 +2300,7 @@ class Contact try { $fetchResult = HTTPSignature::fetchRaw($avatar, 0, [HttpClientOptions::ACCEPT_CONTENT => [HttpClientAccept::IMAGE]]); - $img_str = $fetchResult->getBody(); + $img_str = $fetchResult->getBodyString(); if (!empty($img_str)) { $image = new Image($img_str, Images::getMimeTypeByData($img_str)); if ($image->isValid()) { diff --git a/src/Model/GServer.php b/src/Model/GServer.php index e7f9530498..e40442384a 100644 --- a/src/Model/GServer.php +++ b/src/Model/GServer.php @@ -649,7 +649,7 @@ class GServer } if ($curlResult->isSuccess()) { - $json = json_decode($curlResult->getBody(), true); + $json = json_decode($curlResult->getBodyString(), true); if (!empty($json) && is_array($json)) { $data = self::fetchDataFromSystemActor($json, $serverdata); $serverdata = $data['server']; @@ -657,7 +657,7 @@ class GServer if (!$html_fetched && !in_array($serverdata['detection-method'], [self::DETECT_SYSTEM_ACTOR, self::DETECT_AP_COLLECTION])) { $curlResult = DI::httpClient()->get($url, HttpClientAccept::HTML); } - } elseif (!$html_fetched && (strlen($curlResult->getBody()) < 1000)) { + } elseif (!$html_fetched && (strlen($curlResult->getBodyString()) < 1000)) { $curlResult = DI::httpClient()->get($url, HttpClientAccept::HTML); } @@ -667,7 +667,7 @@ class GServer } } - if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { + if (!$curlResult->isSuccess() || empty($curlResult->getBodyString())) { self::setFailureByUrl($url); return false; } @@ -677,7 +677,7 @@ class GServer $serverdata['network'] = Protocol::ACTIVITYPUB; $serverdata['platform'] = 'threads'; } - + if (($serverdata['network'] == Protocol::PHANTOM) || in_array($serverdata['detection-method'], self::DETECT_UNSPECIFIC)) { $serverdata = self::detectMastodonAlikes($url, $serverdata); } @@ -872,7 +872,7 @@ class GServer return; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (!is_array($data)) { return; } @@ -967,7 +967,7 @@ class GServer return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1059,7 +1059,7 @@ class GServer return []; } - $nodeinfo = json_decode($httpResult->getBody(), true); + $nodeinfo = json_decode($httpResult->getBodyString(), true); if (!is_array($nodeinfo) || empty($nodeinfo['links'])) { return []; @@ -1114,7 +1114,7 @@ class GServer return []; } - $nodeinfo = json_decode($curlResult->getBody(), true); + $nodeinfo = json_decode($curlResult->getBodyString(), true); if (!is_array($nodeinfo)) { return []; @@ -1214,7 +1214,7 @@ class GServer return []; } - $nodeinfo = json_decode($curlResult->getBody(), true); + $nodeinfo = json_decode($curlResult->getBodyString(), true); if (!is_array($nodeinfo)) { return []; } @@ -1331,7 +1331,7 @@ class GServer return []; } - $nodeinfo = json_decode($httpResult->getBody(), true); + $nodeinfo = json_decode($httpResult->getBodyString(), true); if (!is_array($nodeinfo)) { return []; @@ -1434,7 +1434,7 @@ class GServer return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1587,11 +1587,11 @@ class GServer { $name = 'nomad'; $curlResult = DI::httpClient()->get($url . '/manifest', 'application/manifest+json'); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return $name; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $name; } @@ -1608,11 +1608,11 @@ class GServer private static function getNomadVersion(string $url): string { $curlResult = DI::httpClient()->get($url . '/api/z/1.0/version', HttpClientAccept::JSON); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return ''; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return ''; } @@ -1634,7 +1634,7 @@ class GServer return false; } - $xrd = XML::parseString($curlResult->getBody(), true); + $xrd = XML::parseString($curlResult->getBodyString(), true); if (!is_object($xrd)) { return false; } @@ -1733,7 +1733,7 @@ class GServer return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1763,7 +1763,7 @@ class GServer return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1786,11 +1786,11 @@ class GServer private static function detectPeertube(string $url, array $serverdata): array { $curlResult = DI::httpClient()->get($url . '/api/v1/config', HttpClientAccept::JSON); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1834,11 +1834,11 @@ class GServer private static function detectNextcloud(string $url, array $serverdata, bool $validHostMeta): array { $curlResult = DI::httpClient()->get($url . '/status.php', HttpClientAccept::JSON); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1870,11 +1870,11 @@ class GServer private static function fetchWeeklyUsage(string $url, array $serverdata): array { $curlResult = DI::httpClient()->get($url . '/api/v1/instance/activity', HttpClientAccept::JSON); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1910,11 +1910,11 @@ class GServer private static function detectMastodonAlikes(string $url, array $serverdata): array { $curlResult = DI::httpClient()->get($url . '/api/v1/instance', HttpClientAccept::JSON); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data)) { return $serverdata; } @@ -1982,11 +1982,11 @@ class GServer private static function detectHubzilla(string $url, array $serverdata): array { $curlResult = DI::httpClient()->get($url . '/api/statusnet/config.json', HttpClientAccept::JSON); - if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) { + if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) { return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data) || empty($data['site'])) { return $serverdata; } @@ -2079,11 +2079,11 @@ class GServer { // Test for GNU Social $curlResult = DI::httpClient()->get($url . '/api/gnusocial/version.json', HttpClientAccept::JSON); - if ($curlResult->isSuccess() && ($curlResult->getBody() != '{"error":"not implemented"}') && - ($curlResult->getBody() != '') && (strlen($curlResult->getBody()) < 30)) { + if ($curlResult->isSuccess() && ($curlResult->getBodyString() != '{"error":"not implemented"}') && + ($curlResult->getBodyString() != '') && (strlen($curlResult->getBodyString()) < 30)) { $serverdata['platform'] = 'gnusocial'; // Remove junk that some GNU Social servers return - $serverdata['version'] = str_replace(chr(239) . chr(187) . chr(191), '', $curlResult->getBody()); + $serverdata['version'] = str_replace(chr(239) . chr(187) . chr(191), '', $curlResult->getBodyString()); $serverdata['version'] = str_replace(["\r", "\n", "\t"], '', $serverdata['version']); $serverdata['version'] = trim($serverdata['version'], '"'); $serverdata['network'] = Protocol::OSTATUS; @@ -2097,11 +2097,11 @@ class GServer // Test for Statusnet $curlResult = DI::httpClient()->get($url . '/api/statusnet/version.json', HttpClientAccept::JSON); - if ($curlResult->isSuccess() && ($curlResult->getBody() != '{"error":"not implemented"}') && - ($curlResult->getBody() != '') && (strlen($curlResult->getBody()) < 30)) { + if ($curlResult->isSuccess() && ($curlResult->getBodyString() != '{"error":"not implemented"}') && + ($curlResult->getBodyString() != '') && (strlen($curlResult->getBodyString()) < 30)) { // Remove junk that some GNU Social servers return - $serverdata['version'] = str_replace(chr(239).chr(187).chr(191), '', $curlResult->getBody()); + $serverdata['version'] = str_replace(chr(239).chr(187).chr(191), '', $curlResult->getBodyString()); $serverdata['version'] = str_replace(["\r", "\n", "\t"], '', $serverdata['version']); $serverdata['version'] = trim($serverdata['version'], '"'); @@ -2148,7 +2148,7 @@ class GServer return $serverdata; } - $data = json_decode($curlResult->getBody(), true); + $data = json_decode($curlResult->getBodyString(), true); if (empty($data) || empty($data['version'])) { return $serverdata; } @@ -2466,7 +2466,7 @@ class GServer $api = 'https://instances.social/api/1.0/instances/list?count=0'; $curlResult = DI::httpClient()->get($api, HttpClientAccept::JSON, [HttpClientOptions::HEADERS => ['Authorization' => ['Bearer ' . $accesstoken]]]); if ($curlResult->isSuccess()) { - $servers = json_decode($curlResult->getBody(), true); + $servers = json_decode($curlResult->getBodyString(), true); if (!empty($servers['instances'])) { foreach ($servers['instances'] as $server) { diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 10545eee88..d10d70b8eb 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -597,7 +597,7 @@ class Photo if (!empty($image_url)) { $ret = DI::httpClient()->get($image_url, HttpClientAccept::IMAGE); Logger::debug('Got picture', ['Content-Type' => $ret->getHeader('Content-Type'), 'url' => $image_url]); - $img_str = $ret->getBody(); + $img_str = $ret->getBodyString(); $type = $ret->getContentType(); } else { $img_str = ''; @@ -1047,7 +1047,7 @@ class Photo if (!empty($image_url)) { $ret = DI::httpClient()->get($image_url, HttpClientAccept::IMAGE); Logger::debug('Got picture', ['Content-Type' => $ret->getHeader('Content-Type'), 'url' => $image_url]); - $img_str = $ret->getBody(); + $img_str = $ret->getBodyString(); $type = $ret->getContentType(); } else { $img_str = ''; diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index 76b548baa9..4146efe761 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -135,7 +135,7 @@ class Link } $fields = ['mimetype' => $curlResult->getHeader('Content-Type')[0]]; - $img_str = $curlResult->getBody(); + $img_str = $curlResult->getBodyString(); $image = new Image($img_str, Images::getMimeTypeByData($img_str)); if ($image->isValid()) { $fields['mimetype'] = $image->getType(); diff --git a/src/Model/User.php b/src/Model/User.php index 2a8ce5330d..544dace815 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -1383,7 +1383,7 @@ class User $curlResult = DI::httpClient()->get($photo, HttpClientAccept::IMAGE); if ($curlResult->isSuccess()) { Logger::debug('Got picture', ['Content-Type' => $curlResult->getHeader('Content-Type'), 'url' => $photo]); - $img_str = $curlResult->getBody(); + $img_str = $curlResult->getBodyString(); $type = $curlResult->getContentType(); } else { $img_str = ''; @@ -1597,8 +1597,8 @@ class User You may also wish to add some basic information to your default profile (on the "Profiles" page) so that other people can easily find you. - We recommend adding a profile photo, adding some profile "keywords" - (very useful in making new friends) - and perhaps what country you live in; + We recommend adding a profile photo, adding some profile "keywords" + (very useful in making new friends) - and perhaps what country you live in; if you do not wish to be more specific than that. We fully respect your right to privacy, and none of these items are necessary. diff --git a/src/Module/Contact/MatchInterests.php b/src/Module/Contact/MatchInterests.php index 604a917cbf..ac35244049 100644 --- a/src/Module/Contact/MatchInterests.php +++ b/src/Module/Contact/MatchInterests.php @@ -132,7 +132,7 @@ class MatchInterests extends BaseModule } } - $entries = $this->parseContacts(json_decode($result->getBody()), $entries, $limit); + $entries = $this->parseContacts(json_decode($result->getBodyString()), $entries, $limit); } if (empty($entries)) { diff --git a/src/Module/Magic.php b/src/Module/Magic.php index aa7a75aa70..7b60299e20 100644 --- a/src/Module/Magic.php +++ b/src/Module/Magic.php @@ -155,7 +155,7 @@ class Magic extends BaseModule System::externalRedirect($dest); } - $j = json_decode($curlResult->getBody(), true); + $j = json_decode($curlResult->getBodyString(), true); if (empty($j) || !$j['success']) { $this->logger->notice('Invalid JSON, redirecting to destination.', ['json' => $j, 'dest' => $dest]); $this->app->redirect($dest); diff --git a/src/Module/OStatus/PubSubHubBub.php b/src/Module/OStatus/PubSubHubBub.php index 431d603ee0..e4cc5d7209 100644 --- a/src/Module/OStatus/PubSubHubBub.php +++ b/src/Module/OStatus/PubSubHubBub.php @@ -154,7 +154,7 @@ class PubSubHubBub extends \Friendica\BaseModule $separator = parse_url($hub_callback, PHP_URL_QUERY) === null ? '?' : '&'; $fetchResult = $this->httpClient->fetchFull($hub_callback . $separator . $params); - $body = $fetchResult->getBody(); + $body = $fetchResult->getBodyString(); $returnCode = $fetchResult->getReturnCode(); // give up if the HTTP return code wasn't a success (2xx) diff --git a/src/Module/OStatus/Subscribe.php b/src/Module/OStatus/Subscribe.php index 798e8342c2..cee49d5b94 100644 --- a/src/Module/OStatus/Subscribe.php +++ b/src/Module/OStatus/Subscribe.php @@ -96,7 +96,7 @@ class Subscribe extends \Friendica\BaseModule return $o . $this->t('Couldn\'t fetch friends for contact.'); } - $friends = $curlResult->getBody(); + $friends = $curlResult->getBodyString(); if (empty($friends)) { $this->pConfig->delete($uid, 'ostatus', 'legacy_contact'); return $o . $this->t('Couldn\'t fetch following contacts.'); diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index a4a140e47c..0eb95d8a3f 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -85,7 +85,7 @@ class Proxy extends BaseModule // Fetch the content with the local user try { $fetchResult = HTTPSignature::fetchRaw($request['url'], DI::userSession()->getLocalUserId(), [HttpClientOptions::ACCEPT_CONTENT => [HttpClientAccept::IMAGE], 'timeout' => 10]); - $img_str = $fetchResult->getBody(); + $img_str = $fetchResult->getBodyString(); if (!$fetchResult->isSuccess() || empty($img_str)) { Logger::notice('Error fetching image', ['image' => $request['url'], 'return' => $fetchResult->getReturnCode(), 'empty' => empty($img_str)]); diff --git a/src/Network/HTTPClient/Capability/ICanHandleHttpResponses.php b/src/Network/HTTPClient/Capability/ICanHandleHttpResponses.php index e5de3e561b..68c8eda2d8 100644 --- a/src/Network/HTTPClient/Capability/ICanHandleHttpResponses.php +++ b/src/Network/HTTPClient/Capability/ICanHandleHttpResponses.php @@ -97,10 +97,9 @@ interface ICanHandleHttpResponses /** * Getter for body * - * @see MessageInterface::getBody() * @return string */ - public function getBody(); + public function getBodyString(); /** * @return boolean diff --git a/src/Network/HTTPClient/Client/HttpClient.php b/src/Network/HTTPClient/Client/HttpClient.php index bc86579f6d..64d0b0a235 100644 --- a/src/Network/HTTPClient/Client/HttpClient.php +++ b/src/Network/HTTPClient/Client/HttpClient.php @@ -271,7 +271,7 @@ class HttpClient implements ICanSendHttpRequests { $ret = $this->fetchFull($url, $accept_content, $timeout, $cookiejar); - return $ret->getBody(); + return $ret->getBodyString(); } /** diff --git a/src/Network/HTTPClient/Response/CurlResult.php b/src/Network/HTTPClient/Response/CurlResult.php index 5ebebda92a..561c8c47ab 100644 --- a/src/Network/HTTPClient/Response/CurlResult.php +++ b/src/Network/HTTPClient/Response/CurlResult.php @@ -330,7 +330,7 @@ class CurlResult implements ICanHandleHttpResponses } /** {@inheritDoc} */ - public function getBody(): string + public function getBodyString(): string { return $this->body; } diff --git a/src/Network/HTTPClient/Response/GuzzleResponse.php b/src/Network/HTTPClient/Response/GuzzleResponse.php index 1b79126159..d277f2a8df 100644 --- a/src/Network/HTTPClient/Response/GuzzleResponse.php +++ b/src/Network/HTTPClient/Response/GuzzleResponse.php @@ -163,8 +163,7 @@ class GuzzleResponse extends Response implements ICanHandleHttpResponses, Respon return $this->isTimeout; } - /// @todo - fix mismatching use of "getBody()" as string here and parent "getBody()" as streaminterface - public function getBody(): string + public function getBodyString(): string { return (string) parent::getBody(); } diff --git a/src/Network/Probe.php b/src/Network/Probe.php index a49c83f991..fc5125f259 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -225,7 +225,7 @@ class Probe $curlResult = DI::httpClient()->get($ssl_url, HttpClientAccept::XRD_XML, [HttpClientOptions::TIMEOUT => $xrd_timeout]); $ssl_connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0); if ($curlResult->isSuccess()) { - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); $xrd = XML::parseString($xml, true); if (!empty($url)) { $host_url = 'https://' . $host; @@ -250,7 +250,7 @@ class Probe return []; } - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); $xrd = XML::parseString($xml, true); $host_url = 'http://'.$host; } @@ -426,7 +426,7 @@ class Probe if (!empty($data['baseurl']) && empty($data['gsid'])) { $data['gsid'] = GServer::getID($data['baseurl']); - } + } // Ensure that local connections always are DFRN if (($network == '') && ($data['network'] != Protocol::PHANTOM) && (self::ownHost($data['baseurl'] ?? '') || self::ownHost($data['url']))) { @@ -459,7 +459,7 @@ class Probe return false; } - $body = $curlResult->getBody(); + $body = $curlResult->getBodyString(); if (empty($body)) { return false; } @@ -865,7 +865,7 @@ class Probe if ($curlResult->isTimeout()) { return $data; } - $content = $curlResult->getBody(); + $content = $curlResult->getBodyString(); if (!$content) { return $data; } @@ -971,7 +971,7 @@ class Probe self::$isTimeout = true; return []; } - $data = $curlResult->getBody(); + $data = $curlResult->getBodyString(); $webfinger = json_decode($data, true); if (!empty($webfinger)) { @@ -1040,7 +1040,7 @@ class Probe self::$isTimeout = true; return $data; } - $content = $curlResult->getBody(); + $content = $curlResult->getBodyString(); if (!$content) { Logger::info('Empty body', ['url' => $noscrape_url]); return $data; @@ -1303,7 +1303,7 @@ class Probe self::$isTimeout = true; return []; } - $content = $curlResult->getBody(); + $content = $curlResult->getBodyString(); if (empty($content)) { return []; } @@ -1580,7 +1580,7 @@ class Probe return $short ? false : []; } Logger::debug('Fetched public key', ['Content-Type' => $curlResult->getHeader('Content-Type'), 'url' => $pubkey]); - $pubkey = $curlResult->getBody(); + $pubkey = $curlResult->getBodyString(); } try { @@ -1612,7 +1612,7 @@ class Probe self::$isTimeout = true; return []; } - $feed = $curlResult->getBody(); + $feed = $curlResult->getBodyString(); $feed_data = Feed::import($feed); if (!$feed_data) { return []; @@ -1660,12 +1660,12 @@ class Probe private static function pumpioProfileData(string $profile_link, string $baseurl): array { $curlResult = DI::httpClient()->get($profile_link, HttpClientAccept::HTML); - if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { + if (!$curlResult->isSuccess() || empty($curlResult->getBodyString())) { return []; } $doc = new DOMDocument(); - if (!@$doc->loadHTML($curlResult->getBody())) { + if (!@$doc->loadHTML($curlResult->getBodyString())) { return []; } @@ -1887,7 +1887,7 @@ class Probe return []; } - $feed = $curlResult->getBody(); + $feed = $curlResult->getBodyString(); $feed_data = Feed::import($feed); if (!$feed_data) { @@ -2112,8 +2112,8 @@ class Probe $curlResult = DI::httpClient()->get($gserver['noscrape'] . '/' . $data['nick'], HttpClientAccept::JSON); - if ($curlResult->isSuccess() && !empty($curlResult->getBody())) { - $noscrape = json_decode($curlResult->getBody(), true); + if ($curlResult->isSuccess() && !empty($curlResult->getBodyString())) { + $noscrape = json_decode($curlResult->getBodyString(), true); if (!empty($noscrape) && !empty($noscrape['updated'])) { return DateTimeFormat::utc($noscrape['updated'], DateTimeFormat::MYSQL); } @@ -2187,12 +2187,12 @@ class Probe { // Search for the newest entry in the feed $curlResult = DI::httpClient()->get($data['poll'], HttpClientAccept::ATOM_XML); - if (!$curlResult->isSuccess() || !$curlResult->getBody()) { + if (!$curlResult->isSuccess() || !$curlResult->getBodyString()) { return ''; } $doc = new DOMDocument(); - @$doc->loadXML($curlResult->getBody()); + @$doc->loadXML($curlResult->getBodyString()); $xpath = new DOMXPath($doc); $xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom'); diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 87ebbe1ee2..593c1e7836 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -614,7 +614,7 @@ class Processor } if ($curlResult->isSuccess()) { - $object = json_decode($curlResult->getBody(), true); + $object = json_decode($curlResult->getBodyString(), true); if (!empty($object)) { $activity = JsonLD::compact($object); if (JsonLD::fetchElement($activity, '@type') == 'as:Tombstone') { @@ -1584,7 +1584,7 @@ class Processor return ''; } - $body = $curlResult->getBody(); + $body = $curlResult->getBodyString(); if (!$curlResult->isSuccess() || empty($body)) { if (in_array($curlResult->getReturnCode(), [403, 404, 406, 410])) { return null; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index b358796ce7..4d44b8a40f 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1012,7 +1012,7 @@ class DFRN $content_type = ($public_batch ? 'application/magic-envelope+xml' : 'application/json'); $postResult = DI::httpClient()->post($dest_url, $envelope, ['Content-Type' => $content_type]); - $xml = $postResult->getBody(); + $xml = $postResult->getBodyString(); $curl_stat = $postResult->getReturnCode(); if (!empty($contact['gsid']) && ($postResult->isTimeout() || empty($curl_stat))) { diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 061a27b372..fa93b0e827 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -736,7 +736,7 @@ class OStatus $stored = false; $curlResult = DI::httpClient()->get($related, HttpClientAccept::ATOM_XML); - if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { + if (!$curlResult->isSuccess() || empty($curlResult->getBodyString())) { return; } @@ -745,12 +745,12 @@ class OStatus if ($curlResult->inHeader('Content-Type') && in_array('application/atom+xml', $curlResult->getHeader('Content-Type'))) { Logger::info('Directly fetched XML for URI ' . $related_uri); - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); } if ($xml == '') { $doc = new DOMDocument(); - if (!@$doc->loadHTML($curlResult->getBody())) { + if (!@$doc->loadHTML($curlResult->getBodyString())) { return; } $xpath = new DOMXPath($doc); @@ -770,7 +770,7 @@ class OStatus if ($curlResult->isSuccess()) { Logger::info('Fetched XML for URI ' . $related_uri); - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); } } } @@ -782,7 +782,7 @@ class OStatus if ($curlResult->isSuccess()) { Logger::info('GNU Social workaround to fetch XML for URI ' . $related_uri); - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); } } @@ -793,7 +793,7 @@ class OStatus if ($curlResult->isSuccess()) { Logger::info('GNU Social workaround 2 to fetch XML for URI ' . $related_uri); - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); } } diff --git a/src/Security/ExAuth.php b/src/Security/ExAuth.php index 7aac5cad79..eda2f398e6 100644 --- a/src/Security/ExAuth.php +++ b/src/Security/ExAuth.php @@ -250,7 +250,7 @@ class ExAuth return false; } - $json = @json_decode($curlResult->getBody()); + $json = @json_decode($curlResult->getBodyString()); if (!is_object($json)) { return false; } diff --git a/src/Util/HTTPSignature.php b/src/Util/HTTPSignature.php index c0f596e050..01f75776f2 100644 --- a/src/Util/HTTPSignature.php +++ b/src/Util/HTTPSignature.php @@ -433,12 +433,12 @@ class HTTPSignature return []; } - if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { + if (!$curlResult->isSuccess() || empty($curlResult->getBodyString())) { Logger::debug('Fetching was unsuccessful', ['url' => $request, 'return-code' => $curlResult->getReturnCode(), 'error-number' => $curlResult->getErrorNumber(), 'error' => $curlResult->getError()]); return []; } - $content = json_decode($curlResult->getBody(), true); + $content = json_decode($curlResult->getBodyString(), true); if (empty($content) || !is_array($content)) { return []; } diff --git a/src/Util/ParseUrl.php b/src/Util/ParseUrl.php index 684f54c402..184a02ae75 100644 --- a/src/Util/ParseUrl.php +++ b/src/Util/ParseUrl.php @@ -238,7 +238,7 @@ class ParseUrl } $curlResult = DI::httpClient()->get($url, HttpClientAccept::HTML, [HttpClientOptions::CONTENT_LENGTH => 1000000]); - if (!$curlResult->isSuccess() || empty($curlResult->getBody())) { + if (!$curlResult->isSuccess() || empty($curlResult->getBodyString())) { Logger::info('Empty body or error when fetching', ['url' => $url, 'success' => $curlResult->isSuccess(), 'code' => $curlResult->getReturnCode()]); return $siteinfo; } @@ -252,7 +252,7 @@ class ParseUrl } } - $body = $curlResult->getBody(); + $body = $curlResult->getBodyString(); if ($do_oembed) { $oembed_data = OEmbed::fetchURL($url, false, false); diff --git a/src/Worker/CheckRelMeProfileLink.php b/src/Worker/CheckRelMeProfileLink.php index e316371a58..a6bfc9b4c4 100644 --- a/src/Worker/CheckRelMeProfileLink.php +++ b/src/Worker/CheckRelMeProfileLink.php @@ -70,7 +70,7 @@ class CheckRelMeProfileLink return; } - $content = $curlResult->getBody(); + $content = $curlResult->getBodyString(); if (!$content) { Logger::notice('Empty body of the fetched homepage link). Cannot verify the relation to profile of UID %s.', ['uid' => $uid, 'owner homepage' => $owner['homepage']]); return; diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 9f342a30a7..a379c1a371 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -172,7 +172,7 @@ class OnePoll return false; } - $xml = $curlResult->getBody(); + $xml = $curlResult->getBodyString(); if (empty($xml)) { Logger::notice('Empty content', ['id' => $contact['id'], 'url' => $contact['poll']]); return false; diff --git a/src/Worker/UpdateServerPeers.php b/src/Worker/UpdateServerPeers.php index e6998c446d..dd08f5cb40 100644 --- a/src/Worker/UpdateServerPeers.php +++ b/src/Worker/UpdateServerPeers.php @@ -45,12 +45,12 @@ class UpdateServerPeers } $ret = DI::httpClient()->get($url . '/api/v1/instance/peers', HttpClientAccept::JSON); - if (!$ret->isSuccess() || empty($ret->getBody())) { + if (!$ret->isSuccess() || empty($ret->getBodyString())) { Logger::info('Server is not reachable or does not offer the "peers" endpoint', ['url' => $url]); return; } - $peers = json_decode($ret->getBody()); + $peers = json_decode($ret->getBodyString()); if (empty($peers) || !is_array($peers)) { Logger::info('Server does not have any peers listed', ['url' => $url]); return; diff --git a/tests/src/Network/HTTPClient/Response/CurlResultTest.php b/tests/src/Network/HTTPClient/Response/CurlResultTest.php index e7459246e7..d1935ddc83 100644 --- a/tests/src/Network/HTTPClient/Response/CurlResultTest.php +++ b/tests/src/Network/HTTPClient/Response/CurlResultTest.php @@ -47,7 +47,7 @@ class CurlResultTest extends TestCase self::assertFalse($curlResult->isTimeout()); self::assertFalse($curlResult->isRedirectUrl()); self::assertSame($headerArray, $curlResult->getHeaders()); - self::assertSame($body, $curlResult->getBody()); + self::assertSame($body, $curlResult->getBodyString()); self::assertSame('text/html; charset=utf-8', $curlResult->getContentType()); self::assertSame('https://test.local', $curlResult->getUrl()); self::assertSame('https://test.local', $curlResult->getRedirectUrl()); @@ -76,7 +76,7 @@ class CurlResultTest extends TestCase self::assertFalse($curlResult->isTimeout()); self::assertTrue($curlResult->isRedirectUrl()); self::assertSame($headerArray, $curlResult->getHeaders()); - self::assertSame($body, $curlResult->getBody()); + self::assertSame($body, $curlResult->getBodyString()); self::assertSame('text/html; charset=utf-8', $curlResult->getContentType()); self::assertSame('https://test.local/test/it', $curlResult->getUrl()); self::assertSame('https://test.other/test/it', $curlResult->getRedirectUrl()); @@ -103,7 +103,7 @@ class CurlResultTest extends TestCase self::assertTrue($curlResult->isTimeout()); self::assertFalse($curlResult->isRedirectUrl()); self::assertSame($headerArray, $curlResult->getHeaders()); - self::assertSame($body, $curlResult->getBody()); + self::assertSame($body, $curlResult->getBodyString()); self::assertSame('text/html; charset=utf-8', $curlResult->getContentType()); self::assertSame('https://test.local/test/it', $curlResult->getRedirectUrl()); self::assertSame('Tested error', $curlResult->getError()); @@ -131,7 +131,7 @@ class CurlResultTest extends TestCase self::assertFalse($curlResult->isTimeout()); self::assertTrue($curlResult->isRedirectUrl()); self::assertSame($headerArray, $curlResult->getHeaders()); - self::assertSame($body, $curlResult->getBody()); + self::assertSame($body, $curlResult->getBodyString()); self::assertSame('text/html; charset=utf-8', $curlResult->getContentType()); self::assertSame('https://test.local/test/it?key=value', $curlResult->getUrl()); self::assertSame('https://test.other/some/?key=value', $curlResult->getRedirectUrl());