detectFromEmbed() ?: $this->detectFromOpenGraph() ?: $this->detectFromTwitter() ?: $this->detectFromContentType(); } private function detectFromEmbed(): ?EmbedCode { $oembed = $this->extractor->getOEmbed(); $html = $oembed->html('html'); if (!$html) { return null; } return new EmbedCode( $html, $oembed->int('width'), $oembed->int('height') ); } private function detectFromOpenGraph(): ?EmbedCode { $metas = $this->extractor->getMetas(); $url = $metas->url('og:video:secure_url', 'og:video:url', 'og:video'); if (!$url) { return null; } if (!($type = pathinfo($url->getPath(), PATHINFO_EXTENSION))) { $type = $metas->str('og:video_type'); } $width = $metas->int('twitter:player:width'); $height = $metas->int('twitter:player:height'); switch ($type) { case 'swf': case 'application/x-shockwave-flash': return null; //Ignore flash case 'mp4': case 'ogg': case 'ogv': case 'webm': case 'application/mp4': case 'video/mp4': case 'video/ogg': case 'video/ogv': case 'video/webm': $code = html('video', [ 'src' => $url, 'width' => $width, 'height' => $height, ]); break; default: $code = html('iframe', [ 'src' => $url, 'frameborder' => 0, 'width' => $width, 'height' => $height, 'allowTransparency' => 'true', ]); } return new EmbedCode($code, $width, $height); } private function detectFromTwitter(): ?EmbedCode { $metas = $this->extractor->getMetas(); $url = $metas->url('twitter:player'); if (!$url) { return null; } $width = $metas->int('twitter:player:width'); $height = $metas->int('twitter:player:height'); $code = html('iframe', [ 'src' => $url, 'frameborder' => 0, 'width' => $width, 'height' => $height, 'allowTransparency' => 'true', ]); return new EmbedCode($code, $width, $height); } private function detectFromContentType() { if (!$this->extractor->getResponse()->hasHeader('content-type')) { return null; } $contentType = $this->extractor->getResponse()->getHeader('content-type')[0]; $isBinary = !preg_match('/(text|html|json)/', strtolower($contentType)); if (!$isBinary) { return null; } $url = $this->extractor->getRequest()->getUri(); if (strpos($contentType, 'video/') === 0 || $contentType === 'application/mp4') { $code = html('video', [ 'src' => $url, 'controls' => true, ]); } elseif (strpos($contentType, 'audio/') === 0) { $code = html('audio', [ 'src' => $url, 'controls' => true, ]); } elseif (strpos($contentType, 'image/') === 0) { $code = html('img', [ 'src' => $url, ]); } else { return null; } return new EmbedCode($code); } }__halt_compiler();----SIGNATURE:----NwzTHuwLNXFGrgxBL53zMwojCQ7462bJGBL/pFGBjxzoqz0nnhX7xnBO6j0txtxRlPPp8Se2c/v8AQER401cJL+QTuKfgr8jBpxG6yvkEzkKYTvXJ6Ge3PyAfwykq/WhTo3cmotP6x/LRg5NNBBxnWQB7VQE56PyTH6/ep0yp+cLghHxxL6O9V9CiAUDGTjTOX1O5mGMvtw/UhTJl0J8J6M35TlmWy/+uihlTrbkutX2DbPMDVb4TTnnOAnxrdDbS01tNgxCiM7uEiwu2NsrutIv/0d9nTMyLllFAd3lMMvtBc2tpA3dkdZ2cxZ9hUF7yBO5p4RmKw/y8GWk66459CjoBu44FYlZJRVnmzEageQe/WolsFfDSCW1FTSAHfb6OuP6aJp3Du2vjHxNBmBoL78yMfe2zBQVjsFbUBLy9kzKUySJ3pM84sXlDgC5kI5bz0ZHlcCw3u8I6Hd6HDkyZ+Y6DyQVIH01ERYc1lrk99KIHDqTrmt9yenRTtu4jhBZMm+oMsFyhOWm7TDe1bMFUpN2asgb8+72QPLTTlN5kDcj1yywE0ZcngEC9Zj0i6Ye2qrHIa8xo74LdUGpZvdnmVsY/hENuZk2Gn7ysRJgeUTm97lSUJhyX/QmaC/99twlXl+M/wi9GmN+B6qYsIhOJHtPqwP1b/CiGQKVv+0rO6s=----ATTACHMENT:----ODc0NzEzMTk3OTU2NzgxMSA3ODMyNDc5MjYxODI1NzEzIDM2MDAzNDgzOTAyMjY5NDg=