WordPress Version: 6.2
/**
* Retrieve URL headers and content using WP HTTP Request API.
*
* @since 1.5.0
* @package External
* @subpackage MagpieRSS
*
* @param string $url URL to retrieve
* @param array $headers Optional. Headers to send to the URL. Default empty string.
* @return Snoopy style response
*/
function _fetch_remote_file($url, $headers = "")
{
$resp = wp_safe_remote_request($url, array('headers' => $headers, 'timeout' => MAGPIE_FETCH_TIME_OUT));
if (is_wp_error($resp)) {
$error = array_shift($resp->errors);
$resp = new stdClass();
$resp->status = 500;
$resp->response_code = 500;
$resp->error = $error[0] . "\n";
//\n = Snoopy compatibility
return $resp;
}
// Snoopy returns headers unprocessed.
// Also note, WP_HTTP lowercases all keys, Snoopy did not.
$return_headers = array();
foreach (wp_remote_retrieve_headers($resp) as $key => $value) {
if (!is_array($value)) {
$return_headers[] = "{$key}: {$value}";
} else {
foreach ($value as $v) {
$return_headers[] = "{$key}: {$v}";
}
}
}
$response = new stdClass();
$response->status = wp_remote_retrieve_response_code($resp);
$response->response_code = wp_remote_retrieve_response_code($resp);
$response->headers = $return_headers;
$response->results = wp_remote_retrieve_body($resp);
return $response;
}