• Модуль: faceid
  • Путь к файлу: ~/bitrix/modules/faceid/lib/http.php
  • Класс: BitrixFaceIdHttp
  • Вызов: Http::query
public function query($command, $params = array(), $waitResponse = true)
{
	if ($command == '' || !is_array($params))
		return false;

	foreach ($params as $key => $value)
	{
		$params[$key] = empty($value)? '#EMPTY#': $value;
	}

	$params['BX_COMMAND'] = $command;
	$params['BX_LICENCE'] = $this->licenceCode;
	$params['BX_DOMAIN'] = $this->domain;
	$params['BX_TYPE'] = $this->type;
	$params['BX_VERSION'] = self::VERSION;
	$params = BitrixMainTextEncoding::convertEncodingArray($params, SITE_CHARSET, 'UTF-8');
	$params["BX_HASH"] = self::requestSign($this->type, md5(implode("|", $params)));

	Log::write(Array($this->controllerUrl, $params), 'COMMAND: '.$command);

	$waitResponse = $waitResponse? true: BitrixMainConfigOption::get("faceid", "wait_response");

	$httpClient = new BitrixMainWebHttpClient(array(
		"socketTimeout" => 20,
		"streamTimeout" => 60,
		"waitResponse" => $waitResponse,
	));
	$httpClient->setHeader('User-Agent', 'Bitrix FaceId Client');
	$response = $httpClient->post($this->controllerUrl, $params);

	if (defined('FD_CONTROLLER_URL'))
	{
		Log::write(Array($response), 'COMMAND RESULT: '.$command);
	}

	if ($response === false)
	{
		return array('success' => false, 'result' => array(
			'msg' => 'no connection with controller', 'code' => 'FAIL_CONNECT')
		);
	}

	try
	{
		return BitrixMainWebJson::decode($response);
	}
	catch (ArgumentException $e)
	{
		return array('success' => false, 'result' => array(
			'msg' => 'wrong response from cloud', 'code' => 'FAIL_RESPONSE')
		);
	}
}