config = config('Analytics'); } public function hit(string $base64EpisodeData, string ...$audioFilePath): RedirectResponse { $session = Services::session(); $session->start(); $serviceName = ''; if (isset($_GET['_from'])) { $serviceName = $_GET['_from']; } elseif ($session->get('embed_domain') !== null) { $serviceName = $session->get('embed_domain'); } elseif ($session->get('referer') !== null && $session->get('referer') !== '- Direct -') { $serviceName = parse_url($session->get('referer'), PHP_URL_HOST); } $episodeData = unpack( 'IpodcastId/IepisodeId/IbytesThreshold/IfileSize/Iduration/IpublicationDate', base64_url_decode($base64EpisodeData), ); podcast_hit( $episodeData['podcastId'], $episodeData['episodeId'], $episodeData['bytesThreshold'], $episodeData['fileSize'], $episodeData['duration'], $episodeData['publicationDate'], $serviceName, ); return redirect()->to($this->config->getAudioFileUrl(['podcasts', ...$audioFilePath])); } }