connect('127.0.0.1', 6379); $useRedis = true; } } catch (Exception $e) { error_log("Redis not available: " . $e->getMessage()); } if ($useRedis && $redis->exists($cacheKey)) { $artist = json_decode($redis->get($cacheKey), true); } else { $apiUrl = "$postgrestUrl/optimized_artists?url=eq./" . $url; $client = new Client(); try { $response = $client->request("GET", $apiUrl, [ "headers" => [ "Accept" => "application/json", "Authorization" => "Bearer {$postgrestApiKey}", ], ]); $artistData = json_decode($response->getBody(), true); if (!$artistData) { echo file_get_contents(__DIR__ . "/../../404/index.html"); exit(); } $artist = $artistData[0]; if ($useRedis) { $redis->setex($cacheKey, 3600, json_encode($artist)); } } catch (Exception $e) { error_log($e->getMessage()); echo file_get_contents(__DIR__ . "/../../404/index.html"); exit(); } } $artist["description"] = parseMarkdown($artist["description"]); $pageTitle = htmlspecialchars( "Artists • " . $artist["name"], ENT_QUOTES, "UTF-8" ); $pageDescription = truncateText(htmlspecialchars( strip_tags($artist["description"]), ENT_QUOTES, "UTF-8" ), 250); $ogImage = htmlspecialchars($artist["image"] . "?class=w800", ENT_QUOTES, "UTF-8"); $fullUrl = "https://www.coryd.dev" . $requestUri; header("Cache-Control: public, max-age=3600"); header("Expires: " . gmdate("D, d M Y H:i:s", time() + 3600) . " GMT"); ?>