mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-19 13:01:19 +00:00
fix(op3): move op3 prefix to enclosure url instead of audio proxy
This commit is contained in:
parent
94ceba6081
commit
d580369235
@ -20,6 +20,7 @@ use CodeIgniter\HTTP\IncomingRequest;
|
||||
use CodeIgniter\HTTP\RedirectResponse;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use CodeIgniter\HTTP\URI;
|
||||
use Config\Services;
|
||||
use Modules\Analytics\Config\Analytics;
|
||||
use Modules\PremiumPodcasts\Entities\Subscription;
|
||||
@ -166,6 +167,18 @@ class EpisodeAudioController extends Controller
|
||||
$subscription instanceof Subscription ? $subscription->id : null
|
||||
);
|
||||
|
||||
return redirect()->to($this->analyticsConfig->getAudioUrl($this->episode, $this->request->getGet()));
|
||||
$audioFileURI = new URI(service('file_manager')->getUrl($this->episode->audio->file_key));
|
||||
|
||||
$queryParams = [];
|
||||
foreach ($this->request->getGet() as $key => $value) {
|
||||
// do not include token in query params
|
||||
if ($key !== 'token') {
|
||||
$queryParams[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$audioFileURI->setQueryArray($queryParams);
|
||||
|
||||
return redirect()->to((string) $audioFileURI);
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ use App\Models\PostModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
use CodeIgniter\Files\File;
|
||||
use CodeIgniter\HTTP\Files\UploadedFile;
|
||||
use CodeIgniter\HTTP\URI;
|
||||
use CodeIgniter\I18n\Time;
|
||||
use Config\Images;
|
||||
use Exception;
|
||||
@ -30,6 +31,7 @@ use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
|
||||
use League\CommonMark\Extension\DisallowedRawHtml\DisallowedRawHtmlExtension;
|
||||
use League\CommonMark\Extension\SmartPunct\SmartPunctExtension;
|
||||
use League\CommonMark\MarkdownConverter;
|
||||
use Modules\Analytics\OP3;
|
||||
use Modules\Media\Entities\Audio;
|
||||
use Modules\Media\Entities\Chapters;
|
||||
use Modules\Media\Entities\Image;
|
||||
@ -344,7 +346,26 @@ class Episode extends Entity
|
||||
|
||||
public function getAudioUrl(): string
|
||||
{
|
||||
return url_to('episode-audio', $this->getPodcast()->handle, $this->slug, $this->getAudio()->file_extension);
|
||||
$audioURL = url_to(
|
||||
'episode-audio',
|
||||
$this->getPodcast()
|
||||
->handle,
|
||||
$this->slug,
|
||||
$this->getAudio()
|
||||
->file_extension
|
||||
);
|
||||
|
||||
// Wrap episode url with OP3 if episode is public and OP3 is enabled on this podcast
|
||||
if (! $this->is_premium && service('settings')->get(
|
||||
'Analytics.enableOP3',
|
||||
'podcast:' . $this->podcast_id
|
||||
)) {
|
||||
$op3 = new OP3(config('Analytics')->OP3);
|
||||
|
||||
return $op3->wrap($audioURL, $this);
|
||||
}
|
||||
|
||||
return $audioURL;
|
||||
}
|
||||
|
||||
public function getAudioWebUrl(): string
|
||||
|
@ -4,10 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Modules\Analytics\Config;
|
||||
|
||||
use App\Entities\Episode;
|
||||
use CodeIgniter\Config\BaseConfig;
|
||||
use CodeIgniter\HTTP\URI;
|
||||
use Modules\Analytics\OP3;
|
||||
|
||||
class Analytics extends BaseConfig
|
||||
{
|
||||
@ -53,24 +50,4 @@ class Analytics extends BaseConfig
|
||||
];
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ declare(strict_types=1);
|
||||
namespace Modules\Analytics;
|
||||
|
||||
use App\Entities\Episode;
|
||||
use CodeIgniter\HTTP\URI;
|
||||
|
||||
class OP3
|
||||
{
|
||||
@ -25,11 +24,11 @@ class OP3
|
||||
$this->host = rtrim($config['host'], '/');
|
||||
}
|
||||
|
||||
public function wrap(URI $audioURI, Episode $episode): string
|
||||
public function wrap(string $audioURL, Episode $episode): string
|
||||
{
|
||||
// remove scheme from audioURI
|
||||
$audioURI->setScheme('');
|
||||
// remove scheme from audioURI if https
|
||||
$audioURIWithoutHTTPS = preg_replace('(^https://)', '', $audioURL);
|
||||
|
||||
return $this->host . '/e,pg=' . $episode->podcast->guid . '/' . $audioURI;
|
||||
return $this->host . '/e,pg=' . $episode->podcast->guid . '/' . $audioURIWithoutHTTPS;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user