/** * Refactors URLs like these: * - http://player.vimeo.com/video/20830433 * * in such form: * - http://www.vimeo.com/20830433 * * @param string $url Url to prepare. * @return string Prepared url. */ public static function prepareUrl($url, array $options = []) { $url = parent::prepareUrl($url); if (preg_match('#player\\.vimeo\\.com/video/(?<id>[0-9]+)#i', $url, $matches)) { $url = 'http://www.vimeo.com/' . $matches['id']; } return $url; }
/** * Configures Youtube provider. */ protected function _setupYoutube() { $this->configure(['youtubeIdPattern' => '~(?:v=|v/|embed/|youtu\\.be/)(?<id>[a-z0-9_-]+)~i', 'youtubeUrlTemplate' => 'http://www.youtube.com/watch?v=:id', 'youtubeThumbnailFormat' => Youtube::large, 'youtubePreparators' => Container::unique(function ($C) { $preparators = $C->get('oEmbedPreparators'); $preparators[] = $C->get('YoutubeRefactorer'); return $preparators; }), 'youtubePresenters' => Container::unique(function ($C) { $presenters = $C->get('oEmbedPresenters'); $presenters[] = $C->get('YoutubePresenter'); return $presenters; }), 'YoutubeRefactorer' => Container::unique(function ($C) { return new Refactorer($C->get('youtubeIdPattern'), $C->get('youtubeUrlTemplate')); }), 'YoutubePresenter' => Container::unique(function ($C) { return new Youtube($C->get('youtubeThumbnailFormat')); }), 'YoutubeProvider' => function ($C) { $Youtube = new OEmbed($C->get('Http'), $C->get('Dom')); $Youtube->setPreparators($C->get('youtubePreparators')); $Youtube->setPresenters($C->get('youtubePresenters')); return $Youtube; }]); }
/** * */ public function testPrepare() { $this->assertEquals('valid', OEmbed::prepareUrl('valid#anchor')); $this->assertEquals('valid', OEmbed::prepareUrl('valid?argument=value')); $this->assertEquals('valid', OEmbed::prepareUrl('valid?argument=value#anchor')); }