Update MediaService.php

This commit is contained in:
Lizandro Guarnizo
2026-02-21 10:53:27 -05:00
parent a3e089caab
commit 36a1b556c3
+32 -12
View File
@@ -61,20 +61,40 @@ class MediaService {
$mediaUrl = $decoded['url'] ?? ($decoded['data'][0]['url'] ?? null); $mediaUrl = $decoded['url'] ?? ($decoded['data'][0]['url'] ?? null);
if (!$mediaUrl) throw new Exception('No media url from Graph'); if (!$mediaUrl) throw new Exception('No media url from Graph');
// Descargar contenido usando cascade robusto (curl, file_get_contents, shell/proc/wget) // Para URLs de lookaside.fbsbx.com, usar wget directamente porque curl/OpenSSL falla con ese CDN
$content = $this->downloadUrl($mediaUrl); // Obtener URL fresca justo antes de descargar para evitar expiración
if ($content === false) { $content = false;
// Obtener URL fresca del Graph API (la anterior puede haber expirado tras el intento fallido) if (strpos($mediaUrl, 'lookaside.fbsbx.com') !== false) {
error_log("[MediaService] downloadUrl failed, getting fresh URL..."); $authHeaders = !empty($this->token) ? ['Authorization: Bearer ' . $this->token] : [];
$resp2 = $this->graphApiRequest($endpoint); // Intentar wget directo con URL actual
if ($resp2) { $content = $this->shellDownload($mediaUrl, $authHeaders);
$decoded2 = json_decode($resp2, true); if ($content === false) {
$freshUrl = $decoded2['url'] ?? $mediaUrl; // URL puede haber expirado — obtener URL fresca y reintentar
} else { error_log("[MediaService] wget failed, getting fresh URL for {$mediaId}...");
$freshUrl = $mediaUrl; $resp2 = $this->graphApiRequest($endpoint);
if ($resp2) {
$decoded2 = json_decode($resp2, true);
$freshUrl = $decoded2['url'] ?? $mediaUrl;
$content = $this->shellDownload($freshUrl, $authHeaders);
}
} }
$content = $this->downloadUrl($freshUrl);
} }
// Fallback al cascade completo (curl → file_get_contents → wget) para otras URLs
if ($content === false) {
$content = $this->downloadUrl($mediaUrl);
if ($content === false) {
// Obtener URL fresca y reintentar
error_log("[MediaService] downloadUrl failed, getting fresh URL...");
$resp2 = $this->graphApiRequest($endpoint);
if ($resp2) {
$decoded2 = json_decode($resp2, true);
$freshUrl = $decoded2['url'] ?? $mediaUrl;
$content = $this->downloadUrl($freshUrl);
}
}
}
if ($content === false) throw new Exception('Failed to download media content from ' . $mediaUrl); if ($content === false) throw new Exception('Failed to download media content from ' . $mediaUrl);
// Detectar extension desde mime o url // Detectar extension desde mime o url