Handle exception on "head" / missing class variable added
This commit is contained in:
parent
a74bb57298
commit
d1af85b27f
4 changed files with 19 additions and 5 deletions
|
@ -334,8 +334,8 @@ class OEmbed
|
|||
$html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text));
|
||||
|
||||
// If it doesn't parse at all, just return the text.
|
||||
$dom = @DOMDocument::loadHTML($html_text);
|
||||
if (!$dom) {
|
||||
$dom = new DOMDocument();
|
||||
if (!@$dom->loadHTML($html_text)) {
|
||||
return $text;
|
||||
}
|
||||
$xpath = new DOMXPath($dom);
|
||||
|
|
|
@ -34,6 +34,7 @@ class OEmbed
|
|||
|
||||
public $type = '';
|
||||
public $title = '';
|
||||
public $description = '';
|
||||
public $author_name = '';
|
||||
public $author_url = '';
|
||||
public $provider_name = '';
|
||||
|
|
|
@ -79,11 +79,19 @@ class Network
|
|||
|
||||
if (in_array(parse_url($url, PHP_URL_SCHEME), ['https', 'http'])) {
|
||||
$options = [HttpClientOptions::VERIFY => true, HttpClientOptions::TIMEOUT => $xrd_timeout];
|
||||
try {
|
||||
$curlResult = DI::httpClient()->head($url, $options);
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Workaround for systems that can't handle a HEAD request. Don't retry on timeouts.
|
||||
if (!$curlResult->isSuccess() && ($curlResult->getReturnCode() >= 400) && !in_array($curlResult->getReturnCode(), [408, 504])) {
|
||||
try {
|
||||
$curlResult = DI::httpClient()->get($url, HttpClientAccept::DEFAULT, $options);
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$curlResult->isSuccess()) {
|
||||
|
|
|
@ -70,7 +70,12 @@ class ParseUrl
|
|||
$options = [];
|
||||
}
|
||||
|
||||
try {
|
||||
$curlResult = DI::httpClient()->head($url, array_merge([HttpClientOptions::ACCEPT_CONTENT => $accept], $options));
|
||||
} catch (\Exception $e) {
|
||||
DI::logger()->debug('Got exception', ['url' => $url, 'message' => $e->getMessage()]);
|
||||
return [];
|
||||
}
|
||||
|
||||
// Workaround for systems that can't handle a HEAD request. Don't retry on timeouts.
|
||||
if (!$curlResult->isSuccess() && ($curlResult->getReturnCode() >= 400) && !in_array($curlResult->getReturnCode(), [408, 504])) {
|
||||
|
|
Loading…
Reference in a new issue