Skip to content
Snippets Groups Projects
Commit d5803692 authored by Yassine Doghri's avatar Yassine Doghri
Browse files

fix(op3): move op3 prefix to enclosure url instead of audio proxy

parent 94ceba60
No related branches found
No related tags found
No related merge requests found
Pipeline #15854 passed
Pipeline: Castopod

#15855

    ......@@ -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;
    }
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment