Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -1307,6 +1307,13 @@ Example:
tcp://localhost:6379?db=3
```

## Enhancement: HTTP Request Fallback without cURL

MagicObject now includes a **fallback mechanism** for HTTP requests.
If the **cURL extension** is not available in the PHP environment, the library will automatically fall back to using **`stream_context_create`** with **`file_get_contents`**.

This ensures better **portability** and compatibility across different hosting environments where cURL may be disabled by default.

## Bug Fixes: Undefined Array Index in `PicoPageData::applySubqueryResult()`

Fixed an issue where an **undefined array index** error could occur when the provided data structure did not match the expected format.
Expand Down
87 changes: 37 additions & 50 deletions docs/doc.html
Original file line number Diff line number Diff line change
Expand Up @@ -36531,7 +36531,7 @@ <h4>Links</h4>
</ol>
<h2>Description</h2>
<p>Class PicoCurlUtil</p>
<p>This class provides an interface for making HTTP requests using cURL.</p>
<p>This class provides an interface for making HTTP requests using cURL or PHP streams as a fallback.</p>
</div>
<h2>Properties</h2>
<div class="property">
Expand All @@ -36544,7 +36544,16 @@ <h3>Description</h3>
</div>
</div>
<div class="property">
<div class="property-identity">2. <span class="property-label">responseHeaders</span></div>
<div class="property-identity">2. <span class="property-label">isCurlAvailable</span></div>
<h3>Declaration</h3>
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">bool</span> <span class="property-name">$isCurlAvailable</span> = <span class="property-default">false</span>;</div>
<div class="docblock">
<h3>Description</h3>
<p>Flag to indicate if the cURL extension is available</p>
</div>
</div>
<div class="property">
<div class="property-identity">3. <span class="property-label">responseHeaders</span></div>
<h3>Declaration</h3>
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">string[]</span> <span class="property-name">$responseHeaders</span> = <span class="property-default">array()</span>;</div>
<div class="docblock">
Expand All @@ -36553,7 +36562,7 @@ <h3>Description</h3>
</div>
</div>
<div class="property">
<div class="property-identity">3. <span class="property-label">responseBody</span></div>
<div class="property-identity">4. <span class="property-label">responseBody</span></div>
<h3>Declaration</h3>
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">string</span> <span class="property-name">$responseBody</span> = <span class="property-default">&#039;&#039;</span>;</div>
<div class="docblock">
Expand All @@ -36562,7 +36571,7 @@ <h3>Description</h3>
</div>
</div>
<div class="property">
<div class="property-identity">4. <span class="property-label">httpCode</span></div>
<div class="property-identity">5. <span class="property-label">httpCode</span></div>
<h3>Declaration</h3>
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">int</span> <span class="property-name">$httpCode</span> = <span class="property-default">0</span>;</div>
<div class="docblock">
Expand All @@ -36578,7 +36587,7 @@ <h3>Declaration</h3>
<div class='docblock'>
<h3>Description</h3>
<p>PicoCurlUtil constructor.
Initializes the cURL handle.</p>
Initializes the cURL handle if available, otherwise sets the fallback flag.</p>
</div>
</div>
<div class='method'>
Expand Down Expand Up @@ -36633,7 +36642,7 @@ <h3>Return</h3>
<div class="return-description"><p>Response body</p></div>
<h3>Throws</h3>
<div class="return-type">CurlException</div>
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
<div class="return-description"><p>If an error occurs during execution</p></div>
</div>
</div>
<div class='method'>
Expand All @@ -36660,28 +36669,16 @@ <h3>Return</h3>
<div class="return-description"><p>Response body</p></div>
<h3>Throws</h3>
<div class="return-type">CurlException</div>
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
<div class="return-description"><p>If an error occurs during execution</p></div>
</div>
</div>
<div class='method'>
<div class="method-identity">6. <span class="method-label">put</span></div>
<div class="method-identity">6. <span class="method-label">executeCurl</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">put</span>(<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">string</span> <span class="parameter-name">$url</span>, <br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">mixed</span> <span class="parameter-name">$data</span>, <br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">array</span> <span class="parameter-name">$headers <span class="parameter-equal-sign">=</span> <span class="parameter-default">array (
)</span></span><br>
) : <span class="return-type">string</span><br>{<br>}</div>
<div class="method-declaratiopn"><span class="access-level">private</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">executeCurl</span>() : <span class="return-type">string</span><br>{<br>}</div>
<div class='docblock'>
<h3>Description</h3>
<p>Executes a PUT request.</p>
<h3>Parameters</h3>
<div class="parameter-name">$url</div>
<div class="parameter-description"><p>URL for the request</p></div>
<div class="parameter-name">$data</div>
<div class="parameter-description"><p>Data to send</p></div>
<div class="parameter-name">$headers</div>
<div class="parameter-description"><p>Additional headers for the request</p></div>
<p>Executes the cURL request and processes the response.</p>
<h3>Return</h3>
<div class="return-type">string</div>
<div class="return-description"><p>Response body</p></div>
Expand All @@ -36691,46 +36688,36 @@ <h3>Throws</h3>
</div>
</div>
<div class='method'>
<div class="method-identity">7. <span class="method-label">delete</span></div>
<div class="method-identity">7. <span class="method-label">executeStream</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">delete</span>(<br>
<div class="method-declaratiopn"><span class="access-level">private</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">executeStream</span>(<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">string</span> <span class="parameter-name">$url</span>, <br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">array</span> <span class="parameter-name">$headers <span class="parameter-equal-sign">=</span> <span class="parameter-default">array (
)</span></span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">string</span> <span class="parameter-name">$method</span>, <br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">mixed</span> <span class="parameter-name">$data</span>, <br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">array</span> <span class="parameter-name">$headers</span><br>
) : <span class="return-type">string</span><br>{<br>}</div>
<div class='docblock'>
<h3>Description</h3>
<p>Executes a DELETE request.</p>
<p>Executes the request using PHP streams.</p>
<h3>Parameters</h3>
<div class="parameter-name">$url</div>
<div class="parameter-description"><p>URL for the request</p></div>
<div class="parameter-description"></div>
<div class="parameter-name">$method</div>
<div class="parameter-description"></div>
<div class="parameter-name">$data</div>
<div class="parameter-description"></div>
<div class="parameter-name">$headers</div>
<div class="parameter-description"><p>Additional headers for the request</p></div>
<h3>Return</h3>
<div class="return-type">string</div>
<div class="return-description"><p>Response body</p></div>
<h3>Throws</h3>
<div class="return-type">CurlException</div>
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
</div>
</div>
<div class='method'>
<div class="method-identity">8. <span class="method-label">execute</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">private</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">execute</span>() : <span class="return-type">string</span><br>{<br>}</div>
<div class='docblock'>
<h3>Description</h3>
<p>Executes the cURL request and processes the response.</p>
<div class="parameter-description"></div>
<h3>Return</h3>
<div class="return-type">string</div>
<div class="return-description"><p>Response body</p></div>
<div class="return-description"></div>
<h3>Throws</h3>
<div class="return-type">CurlException</div>
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
<div class="return-description"></div>
</div>
</div>
<div class='method'>
<div class="method-identity">9. <span class="method-label">getHttpCode</span></div>
<div class="method-identity">8. <span class="method-label">getHttpCode</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">getHttpCode</span>() : <span class="return-type">int</span><br>{<br>}</div>
<div class='docblock'>
Expand All @@ -36742,7 +36729,7 @@ <h3>Return</h3>
</div>
</div>
<div class='method'>
<div class="method-identity">10. <span class="method-label">getResponseHeaders</span></div>
<div class="method-identity">9. <span class="method-label">getResponseHeaders</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">getResponseHeaders</span>() : <span class="return-type">array</span><br>{<br>}</div>
<div class='docblock'>
Expand All @@ -36754,7 +36741,7 @@ <h3>Return</h3>
</div>
</div>
<div class='method'>
<div class="method-identity">11. <span class="method-label">close</span></div>
<div class="method-identity">10. <span class="method-label">close</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">close</span>()<br>{<br>}</div>
<div class='docblock'>
Expand All @@ -36763,7 +36750,7 @@ <h3>Description</h3>
</div>
</div>
<div class='method'>
<div class="method-identity">12. <span class="method-label">__destruct</span></div>
<div class="method-identity">11. <span class="method-label">__destruct</span></div>
<h3>Declaration</h3>
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">__destruct</span>()<br>{<br>}</div>
<div class='docblock'>
Expand Down
Loading