- Модуль: transformer
- Путь к файлу: ~/bitrix/modules/transformer/lib/http.php
- Класс: BitrixTransformerHttp
- Вызов: Http::query
public function query($command, $guid, $params = array())
{
if($command == '')
{
throw new ArgumentNullException('command');
}
if(!is_array($params))
{
throw new ArgumentTypeException('params', 'array');
}
if(!$this->shouldWeSend())
{
return [
'success' => false,
'result' => [
'code' => Command::ERROR_CONNECTION_COUNT
]
];
}
if($params['file'])
{
$uri = new BitrixMainWebUri($params['file']);
if($uri->getHost() == '')
{
$params['file'] = (new Uri($this->domain.$params['file']))->getLocator();
}
}
$params['back_url'] = $this->getBackUrl($guid);
$post = array('command' => $command, 'params' => $params);
if($params['queue'])
{
$post['QUEUE'] = $params['queue'];
}
$post['BX_LICENCE'] = $this->licenceCode;
$post['BX_DOMAIN'] = $this->domain;
$post['BX_TYPE'] = $this->type;
$post['BX_VERSION'] = self::VERSION;
$post = BitrixMainTextEncoding::convertEncoding($post, SITE_CHARSET, 'UTF-8');
$post['BX_HASH'] = self::requestSign($this->type, md5(implode('|', $post)));
Log::write('COMMAND: '.print_r($post, 1));
$httpClient = new BitrixMainWebHttpClient(array(
'socketTimeout' => Option::get(self::MODULE_ID, 'connection_time', 8),
'streamTimeout' => Option::get(self::MODULE_ID, 'stream_time', 8),
'waitResponse' => true,
));
$httpClient->setHeader('User-Agent', 'Bitrix Transformer Client');
$httpClient->setHeader('Referer', $this->domain);
$response = $httpClient->post($this->controllerUrl, $post);
Log::write('RESPONSE: '.$response);
if($response === false)
{
return [
'success' => false,
'result' => [
'code' => Command::ERROR_CONNECTION
]
];
}
try
{
return Json::decode($response);
}
catch(ArgumentException $e)
{
return [
'success' => false,
'result' => [
'code' => Command::ERROR_CONNECTION_RESPONSE,
]
];
}
}