- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/urlpreview/parser/oembed.php
- Класс: BitrixMainUrlPreviewParserOembed
- Вызов: Oembed::handle
public function handle(HtmlDocument $document, HttpClient $httpClient = null)
{
if(!$this->detectOembedLink($document) || $this->metadataUrl == '')
{
return;
}
$isHttpClientPassed = true;
if(!$httpClient)
{
$httpClient = $this->initHttpClient();
$isHttpClientPassed = false;
}
$rawMetadata = $this->getRawMetaData($httpClient);
// if request was served through http - try to switch to https
if(
(
!$rawMetadata
|| $httpClient->getStatus() === 403
)
&& mb_strpos($this->metadataUrl, 'http://') === 0)
{
if(!$isHttpClientPassed)
{
$httpClient = $this->initHttpClient();
}
$metadataUrl = str_replace('http://', 'https://', $this->metadataUrl);
$rawMetadata = $httpClient->get($metadataUrl);
}
if($rawMetadata === false)
{
return;
}
$parsedMetadata = $this->parseMetadata($rawMetadata);
if($parsedMetadata !== false)
{
if($this->metadataEncoding <> '' && $document->getEncoding() !== $this->metadataEncoding)
{
$parsedMetadata = Encoding::convertEncoding($parsedMetadata, $this->metadataEncoding, $document->getEncoding());
}
if($document->getTitle() == '' && $parsedMetadata['title'] != '')
{
$document->setTitle($parsedMetadata['title']);
}
if($document->getImage() == '' && $parsedMetadata['thumbnail_url'] != '')
{
$document->setImage($parsedMetadata['thumbnail_url']);
}
if($document->getEmdbed() == '' && $parsedMetadata['html'] != '')
{
$document->setEmbed($parsedMetadata['html']);
}
if($document->getExtraField('PROVIDER_NAME') == '' && $parsedMetadata['provider_name'] != '')
{
$document->setExtraField('PROVIDER_NAME', $parsedMetadata['provider_name']);
}
if($document->getExtraField('VIDEO_WIDTH') == '' && $parsedMetadata['width'] != '')
{
$document->setExtraField('VIDEO_WIDTH', $parsedMetadata['width']);
}
if($document->getExtraField('VIDEO_HEIGHT') == '' && $parsedMetadata['height'] != '')
{
$document->setExtraField('VIDEO_HEIGHT', $parsedMetadata['height']);
}
}
}