*/ public array $routeFilters = [ 'analytics-full-data' => 'permission:podcast#.view', 'analytics-data' => 'permission:podcast#.view', 'analytics-filtered-data' => 'permission:podcast#.view', ]; /** * -------------------------------------------------------------------------- * Secret Salt * -------------------------------------------------------------------------- * * The secret salt is a string of random characters that is used when hashing data. * Each Castopod instance has its own secret salt so keys will never be the same. * * Example: * Z&|qECKBrwgaaD>~;U/tXG1U%tSe_oi5Tzy)h>}5NC2npSrjvM0w_Q>cs=0o=H]* */ public string $salt = ''; /** * -------------------------------------------------------------------------- * The Open Podcast Prefix Project Config * -------------------------------------------------------------------------- * * @var array */ public array $OP3 = [ 'host' => 'https://op3.dev/', ]; public bool $enableOP3 = false; /** * get the full audio file url */ public function getAudioUrl(Episode $episode, array $params): string { $audioFileURI = new URI(service('file_manager')->getUrl($episode->audio->file_key)); $audioFileURI->setQueryArray($params); // Wrap episode url with OP3 if episode is public and OP3 is enabled on this podcast if (! $episode->is_premium && service('settings')->get( 'Analytics.enableOP3', 'podcast:' . $episode->podcast_id )) { $op3 = new OP3($this->OP3); $audioFileURI = new URI($op3->wrap($audioFileURI, $episode)); } return (string) $audioFileURI; } }