<?php
require 'vendor/autoload.php';
use Firebase\JWT\JWT;
use GuzzleHttp\Client;
$dotenv = Dotenv\Dotenv::createImmutable(DIR);
$dotenv->load();
$secretKey = getenv('PERFORMANCE_SECRET_KEY');
if (!$secretKey) {
http_response_code(500);
echo json_encode(['error' => 'Secret key not configured. Please add PERFORMANCE_SECRET_KEY to your .env']);
exit;
}
$client = new Client();
try {
// HTTPS recommended but http is ok you can remove port if you use a NGINX proxy.
$response = $client->request('GET', 'http://SERVER_DOMAIN_OR_IP_ADDRESS:7000/token');
$responseBody = $response->getBody()->getContents();
$tokenData = json_decode($responseBody, true);
$token = $tokenData['token'];
} catch (Exception $e) {
echo 'Error fetching token: ', $e->getMessage(), "\n";
exit;
}
try {
$decodedToken = JWT::decode($token, $secretKey, ['HS256']);
$decodedArray = (array) $decodedToken;
error_log('Decoded Token: ' . print_r($decodedArray, true)); // For debugging purposes
} catch (Exception $e) {
error_log('Error verifying token: ' . $e->getMessage());
http_response_code(401);
echo json_encode(['error' => 'Invalid token']);
exit;
}
$s = $decodedArray['s'];
$d = $decodedArray['d'];
$exp = $decodedArray['exp'];
// Add the following to your FEED Code
$performanceTag = "<podcast:performance url="https://SERVER_DOMAIN_OR_IP_ADDRESS/episodeperformance/{$s}\" tokenExpires="{$exp}" duration="{$d}">";
// Add this to your FEED Code
$eventsTag = "<podcast:events url="https://SERVER_DOMAIN_OR_IP_ADDRESS/indbox\">";
// Assuming you have a way to insert this into your feed
// echo or save $performanceTag to your RSS feed generator
echo $performanceTag;
echo $eventsTag;
?>