From 0082cbe3f4dafd911d2e3ff590c1fae1c7220db4 Mon Sep 17 00:00:00 2001 From: kj Date: Mon, 5 Oct 2026 17:36:08 -0300 Subject: [PATCH] fix(http): drop deprecated curl_close calls; resolve Proxy destination lazily PHP 8.5 deprecates curl_close() (no-op since 8.0) and Libs\Proxy fataled on class load because SOURCE_URL was evaluated in a static property initializer. Stamps http with per-component core data for load-verified clients (aria2, proxy, compreFace). --- packages/http/duckbrain.json | 50 ++++++++++++++++++++++---- packages/http/src/Libs/Aria2.php | 10 ------ packages/http/src/Libs/CurlRequest.php | 4 --- packages/http/src/Libs/Proxy.php | 23 +++++++++--- 4 files changed, 62 insertions(+), 25 deletions(-) diff --git a/packages/http/duckbrain.json b/packages/http/duckbrain.json index 455eb0f..4ca7228 100644 --- a/packages/http/duckbrain.json +++ b/packages/http/duckbrain.json @@ -2,16 +2,52 @@ "name": "http", "version": "0.1.0", "description": "Utilidades HTTP (CurlRequest, Aria2, Proxy, CompreFace)", - "core": { "requires": ">=0.1", "tested": "0.1" }, + "core": { + "requires": ">=0.1", + "tested": "0.1" + }, "php": ">=8.1", "components": { - "curlRequest": { "files": ["src/Libs/CurlRequest.php"] }, - "aria2": { "files": ["src/Libs/Aria2.php"] }, - "proxy": { "files": ["src/Libs/Proxy.php"] }, + "curlRequest": { + "files": [ + "src/Libs/CurlRequest.php" + ] + }, + "aria2": { + "files": [ + "src/Libs/Aria2.php" + ], + "core": { + "requires": ">=0.1", + "tested": "0.1" + } + }, + "proxy": { + "files": [ + "src/Libs/Proxy.php" + ], + "core": { + "requires": ">=0.1", + "tested": "0.1" + } + }, "compreFace": { - "files": ["src/Libs/CompreFace.php"], - "require": { "http:curlRequest": ">=0.1" } + "files": [ + "src/Libs/CompreFace.php" + ], + "require": { + "http:curlRequest": ">=0.1" + }, + "core": { + "requires": ">=0.1", + "tested": "0.1" + } } }, - "default": ["curlRequest", "aria2", "proxy", "compreFace"] + "default": [ + "curlRequest", + "aria2", + "proxy", + "compreFace" + ] } diff --git a/packages/http/src/Libs/Aria2.php b/packages/http/src/Libs/Aria2.php index caac697..44d0a78 100644 --- a/packages/http/src/Libs/Aria2.php +++ b/packages/http/src/Libs/Aria2.php @@ -40,16 +40,6 @@ class Aria2 ]); } - /** - * Destructor - * - * @return void - */ - public function __destruct() - { - curl_close($this->ch); - } - /** * Allows starting a batch call. * diff --git a/packages/http/src/Libs/CurlRequest.php b/packages/http/src/Libs/CurlRequest.php index 7a2ee46..43d5e82 100644 --- a/packages/http/src/Libs/CurlRequest.php +++ b/packages/http/src/Libs/CurlRequest.php @@ -52,10 +52,6 @@ class CurlRequest $this->responseBody = curl_exec($handler); $this->responseHeaders = curl_getinfo($handler, CURLINFO_HEADER_OUT); $this->statusCode = curl_getinfo($handler, CURLINFO_HTTP_CODE); - - // throw new Exception('Error al realizar la solicitud. '. curl_error($handler)); - - curl_close($handler); } /** diff --git a/packages/http/src/Libs/Proxy.php b/packages/http/src/Libs/Proxy.php index 1a69fe8..5f55319 100644 --- a/packages/http/src/Libs/Proxy.php +++ b/packages/http/src/Libs/Proxy.php @@ -22,9 +22,25 @@ class Proxy 'Location', ]; public static $proxy_base_url_canonical = '/'; - public static $destination_host = SOURCE_URL; + public static ?string $destination_host = null; protected static $filters = []; + /** + * Host destino efectivo: el asignado explicitamente o la constante + * SOURCE_URL del proyecto si existe. Se resuelve tarde para que la + * simple carga de la clase no falle sin configuracion. + * + * @return string + */ + protected static function destinationHost(): string + { + if (static::$destination_host !== null) { + return static::$destination_host; + } + + return defined('SOURCE_URL') ? (string) SOURCE_URL : ''; + } + /** * Adds a callable (AKA filter) that will receive the content * and should return a string. @@ -76,7 +92,7 @@ class Proxy } // Generate the final URL - $proxy_request_url = static::$destination_host . $proxy_request_uri; + $proxy_request_url = static::destinationHost() . $proxy_request_uri; // cURL initialization $ch = curl_init(); @@ -121,11 +137,10 @@ class Proxy // Execute the request $res = curl_exec($ch); - curl_close($ch); // Parse the response list($headers, $body) = explode("\r\n\r\n", $res, 2); - $headers = str_replace(static::$destination_host, '/', $headers); + $headers = str_replace(static::destinationHost(), '/', $headers); $headers = explode("\r\n", $headers); $hs = [];