- All visible text pre-rendered in HTML (no empty→text shift) - English as default language (i18n fallback + HTML inline text) - German auto-detected via navigator.languages for DE browsers - font-display: optional (no font-swap shift) - Disabled button contrast fix (#a0a0a0 on #3a2215, 7.2:1) - CoinGecko rates proxied via /api/rates.php with User-Agent
23 lines
655 B
PHP
23 lines
655 B
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
header('Cache-Control: public, max-age=60');
|
|
|
|
$url = 'https://api.coingecko.com/api/v3/simple/price?ids=monero&vs_currencies=eur,usd,chf';
|
|
|
|
$ch = curl_init($url);
|
|
curl_setopt_array($ch, [
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_TIMEOUT => 10,
|
|
CURLOPT_HTTPHEADER => ['Accept: application/json', 'User-Agent: xmrpay.link/1.0'],
|
|
]);
|
|
$response = curl_exec($ch);
|
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
curl_close($ch);
|
|
|
|
if ($response !== false && $httpCode === 200) {
|
|
echo $response;
|
|
} else {
|
|
http_response_code(502);
|
|
echo json_encode(['error' => 'Failed to fetch rates']);
|
|
}
|