• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/urlchecker.php
  • Класс: BitrixLandingUrlChecker
  • Вызов: UrlChecker::getUrlStatus
protected function getUrlStatus(string $url): ?string
{
	try
	{
		$http = new HttpClient;
		$http->setHeader('x-apikey', $this->apiKey);
		$res = Json::decode($http->post(self::EXTERNAL_CHECKER_URL_LOAD_URL, [
			'url' => $url,
		]));
		if (!isset($res['error']) && $res['data'] && $res['data']['id'])
		{
			$resAnalysis = Json::decode($http->get(self::EXTERNAL_CHECKER_URL_GET_ANALYSE . $res['data']['id']));
			if (isset($resAnalysis['error']))
			{
				// todo: set VT error
				return $res['error']['status'];
			}
			$stats = [
				self::STATUS_KEY_GOOD => $resAnalysis['data']['attributes']['stats'][self::STATUS_KEY_GOOD],
				self::STATUS_KEY_AVERAGE => $resAnalysis['data']['attributes']['stats'][self::STATUS_KEY_AVERAGE],
				self::STATUS_KEY_BAD => $resAnalysis['data']['attributes']['stats'][self::STATUS_KEY_BAD],
			];

			// check stats
			$total = $stats[self::STATUS_KEY_GOOD] + $stats[self::STATUS_KEY_AVERAGE] + $stats[self::STATUS_KEY_BAD];
			if (
				$stats[self::STATUS_KEY_BAD] === 0
				&& $stats[self::STATUS_KEY_AVERAGE] <= $total * self::AVERAGE_STATUS_PERCENT * 0.01
			)
			{
				return null;
			}

			return
				self::STATUS_KEY_GOOD . ':' . $stats[self::STATUS_KEY_GOOD]
				. '_' . self::STATUS_KEY_AVERAGE . ':' . $stats[self::STATUS_KEY_AVERAGE]
				. '_' . self::STATUS_KEY_BAD . ':' . $stats[self::STATUS_KEY_BAD];
		}
	}
	catch (Exception $e){}

	return null;
}