80 lines
2.2 KiB
Text
80 lines
2.2 KiB
Text
<?php
|
|
require __DIR__ . "/../../vendor/autoload.php";
|
|
require __DIR__ . "/../../server/utils/init.php";
|
|
|
|
use GuzzleHttp\Client;
|
|
|
|
$requestUri = $_SERVER["REQUEST_URI"];
|
|
$url = trim(parse_url($requestUri, PHP_URL_PATH), "/");
|
|
$postgrestUrl = $_ENV["POSTGREST_URL"] ?? getenv("POSTGREST_URL");
|
|
$postgrestApiKey = $_ENV["POSTGREST_API_KEY"] ?? getenv("POSTGREST_API_KEY");
|
|
|
|
if (strpos($url, "music/artists/") !== 0) {
|
|
echo file_get_contents(__DIR__ . "/../../404/index.html");
|
|
exit();
|
|
}
|
|
|
|
$cacheKey = "artist_" . md5($url);
|
|
$artist = null;
|
|
$useRedis = false;
|
|
|
|
try {
|
|
if (extension_loaded('redis')) {
|
|
$redis = new Redis();
|
|
$redis->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");
|
|
?>
|