Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/goodde.yandexturboapi/lib/ |
Upload File : |
<? namespace Goodde\YandexTurbo\Model; use Bitrix\Main\Type, Bitrix\Main\Config\Option, Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); class Request { private static $moduleId = 'goodde.yandexturboapi'; private static $protocol = 'https://'; private static $host = 'api.webmaster.yandex.net'; private static $version = '/v4/'; private static $curlTimeout = 10; public static function getPropSite($siteId = '') { $arTurboProp = array(); $turboProp = Option::get(self::$moduleId, 'turbo_prod', '', $siteId); if ($turboProp <> '') $arTurboProp = unserialize($turboProp); return $arTurboProp; } public static function getServerAddress($siteId = '') { $arProp = self::getPropSite($siteId); return self::getHostNamebyYandexHostId($arProp['host_id']); } public static function getHostNamebyYandexHostId($hostId = '') { $strHost = ''; if($hostId) { $arHost = explode(':', $hostId); $strHost .= $arHost[0].'://'.$arHost[1]; } return $strHost; } public static function getToken($siteId = '') { $arToken = self::getPropSite($siteId); return $arToken['token']; } public static function getUserId($siteId = '') { $arUserId = self::getPropSite($siteId); return $arUserId['user_id']; } public static function getHostId($siteId = '') { $arHostId = self::getPropSite($siteId); return $arHostId['host_id']; } public static function getUrl($version = '/v4/') { $url = self::$protocol.self::$host.$version; return $url; } public static function getHeaderList($siteId = '') { return array( 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'], 'Authorization: OAuth '. self::getToken($siteId) ); } public static function strUser() { return self::getUrl(self::$version).'user/'; } public static function strHost($siteId = '') { return self::getUrl(self::$version).'user/'.self::getUserId($siteId).'/hosts/'; } public static function strUploadAddress($siteId = '', $mode = '', $subdomainHostId = '') { $hostId = ($subdomainHostId <> '' ? $subdomainHostId : self::getHostId($siteId)); return self::getUrl(self::$version).'user/'.self::getUserId($siteId).'/hosts/'.$hostId.'/turbo/uploadAddress/?mode='.$mode; } public static function stsTaskId($siteId = '', $taskId = '') { return self::getUrl(self::$version).'user/'.self::getUserId($siteId).'/hosts/'.self::getHostId($siteId).'/turbo/tasks/'.$taskId; } public static function strAddAddress($siteId = '', $mode = '', $subdomainHostId = '') { $strAddAddress = ''; $arProp = Request::curUploadAddress($siteId, $mode, $subdomainHostId); if($arProp['url_'.$mode] <> '') { $strAddAddress = $arProp['url_'.$mode]; } return $strAddAddress; } public static function curUser($siteId = '') { $arUserId = array(); if(function_exists('curl_init')) { if($curl = curl_init(self::strUser())) { $arHeaderList = self::getHeaderList($siteId); $arHeaderList[] = 'Accept: application/json'; curl_setopt($curl, CURLOPT_HTTPHEADER, $arHeaderList); curl_setopt($curl, CURLOPT_TIMEOUT, self::$curlTimeout); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($curl); curl_close($curl); $arResult = json_decode($result, true, 512, JSON_BIGINT_AS_STRING); if(isset($arResult['error_code'])) { $GLOBALS['APPLICATION']->ThrowException($arResult['error_message'], $arResult['error_code']); } else { $arUserId['user_id'] = $arResult['user_id']; } } } else { $GLOBALS['APPLICATION']->ThrowException('curl_init function doesnt exist'); } return $arUserId; } public static function curHost($siteId = '') { $arHosts = array(); if(function_exists('curl_init')) { if($curl = curl_init(self::strHost($siteId))) { $arHeaderList = self::getHeaderList($siteId); $arHeaderList[] = 'Accept: application/json'; curl_setopt($curl, CURLOPT_HTTPHEADER, $arHeaderList); curl_setopt($curl, CURLOPT_TIMEOUT, self::$curlTimeout); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($curl); curl_close($curl); $arResult = json_decode($result, true); if(isset($arResult['error_code'])) { $GLOBALS['APPLICATION']->ThrowException($arResult['error_message'], $arResult['error_code']); } else { $arHosts = $arResult['hosts']; } } } else { $GLOBALS['APPLICATION']->ThrowException('curl_init function doesnt exist'); } return $arHosts; } public static function curUploadAddress($siteId = '', $mode = '', $subdomainHostId = '') { $arUploadAddress = array(); if(function_exists('curl_init')) { if($curl = curl_init(self::strUploadAddress($siteId, $mode, $subdomainHostId))) { $arHeaderList = self::getHeaderList($siteId); $arHeaderList[] = 'Accept: application/json'; curl_setopt($curl, CURLOPT_HTTPHEADER, $arHeaderList); curl_setopt($curl, CURLOPT_TIMEOUT, self::$curlTimeout); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($curl); curl_close($curl); $arResult = json_decode($result, true); if(isset($arResult['error_code'])) { $GLOBALS['APPLICATION']->ThrowException($arResult['error_message'], $arResult['error_code']); } else { $arUploadAddress['url_'.mb_strtolower($mode)] = $arResult['upload_address']; } } } else { $GLOBALS['APPLICATION']->ThrowException('curl_init function doesnt exist'); } return $arUploadAddress; } public static function addFeed($siteId = '', $mode = '', $data = '', $isGzip = false, $subdomainHostId = '') { $arResult = array(); if(function_exists('curl_init')) { if($curl = curl_init(self::strAddAddress($siteId, $mode, $subdomainHostId))) { $arHeaderList = self::getHeaderList($siteId); $arHeaderList[] = 'Content-type: application/rss+xml'; if($isGzip) { $arHeaderList[] = 'Content-Encoding: gzip'; } curl_setopt($curl, CURLOPT_HTTPHEADER, $arHeaderList); curl_setopt($curl, CURLOPT_TIMEOUT, self::$curlTimeout); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); if($isGzip) { curl_setopt($curl, CURLOPT_ENCODING , 'gzip'); } curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $result = curl_exec($curl); curl_close($curl); $arResult = json_decode($result, true); } } else { $GLOBALS['APPLICATION']->ThrowException('curl_init function doesnt exist'); } return $arResult; } public static function getFeed($siteId = '', $taskId = '') { $arResult = array(); if(function_exists('curl_init')) { if($curl = curl_init(self::stsTaskId($siteId, $taskId))) { $arHeaderList = self::getHeaderList($siteId); $arHeaderList[] = 'Accept: application/json'; curl_setopt($curl, CURLOPT_HTTPHEADER, $arHeaderList); curl_setopt($curl, CURLOPT_TIMEOUT, self::$curlTimeout); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($curl); curl_close($curl); $arResult = json_decode($result, true); } } else { $GLOBALS['APPLICATION']->ThrowException('curl_init function doesnt exist'); } return $arResult; } }