CCrmExternalSaleProxy::Send

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmExternalSaleProxy
  4. Send
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_external_sale_proxy.php
  • Класс: \CCrmExternalSaleProxy
  • Вызов: CCrmExternalSaleProxy::Send
public function Send(array $request)
{
	$method = isset($request['METHOD'])? mb_strtoupper($request['METHOD']) : '';
	if($method !== \Bitrix\Main\Web\HttpClient::HTTP_GET && $method !== \Bitrix\Main\Web\HttpClient::HTTP_POST)
	{
		throw new Bitrix\Main\ArgumentException("Could not find 'METHOD'.", 'request');
	}

	$path = isset($request['PATH']) && is_string($request['PATH']) ? $request['PATH'] : '';
	if($path === '')
	{
		throw new Bitrix\Main\ArgumentException("Could not find 'PATH'.", 'request');
	}

	$postData = $method === \Bitrix\Main\Web\HttpClient::HTTP_POST
		&& isset($request['BODY'])
		? $request['BODY'] : null;

	if(!$this->client)
	{
		$this->client = new \Bitrix\Main\Web\HttpClient();
	}

	$this->client->setRedirect(false);

	if($method === \Bitrix\Main\Web\HttpClient::HTTP_POST && is_array($postData))
	{
		//Force UTF encoding
		$this->client->setCharset('UTF-8');
		if ((!isset($request['UTF']) || !$request['UTF']) && !defined('BX_UTF'))
		{
			$postData = \Bitrix\Main\Text\Encoding::convertEncodingArray($postData, SITE_CHARSET, 'UTF-8');
		}
	}

	$headers = isset($request['HEADERS']) ? $request['HEADERS'] : null;
	if(is_array($headers))
	{
		foreach($headers as $k => $v)
		{
			$this->client->setHeader($k, $v, true);
		}
	}

	if(!empty($this->cookies))
	{
		$this->client->setCookies($this->cookies);
	}

	if($this->enableProxy)
	{
		$this->client->setProxy($this->proxyServer, $this->proxyPort, $this->proxyUserName, $this->proxyUserPassword);
	}

	if($this->userName !== '')
	{
		$this->client->setAuthorization($this->userName, $this->userPassword);
	}

	$this->client->setHeader('User-Agent', $this->userAgent, true);

	$absolutePath = $this->GetUrl().$path;
	if(!$this->client->query($method, $absolutePath, $postData))
	{
		$this->responseData = null;
		$this->errors = $this->client->getError();
	}
	else
	{
		/**@var \Bitrix\Main\Web\HttpHeaders*/
		$responseHeaders = $this->client->getHeaders();

		//STATUS.VERSION & STATUS.PHRASE are delcared for backward compatibility only.
		$this->responseData = array(
			'STATUS' => array(
				'VERSION' => '',
				'CODE' => $this->client->getStatus(),
				'PHRASE' => ''
			),
			'CONTENT' => array(
				'TYPE' => $this->client->getContentType(),
				'ENCODING' => $this->client->getCharset()
			),
			'HEADERS' => $responseHeaders,
			'BODY' => $this->client->getResult()
		);

		if($responseHeaders->get('Set-Cookie', false) !== null)
		{
			$this->cookies = array_merge($this->cookies, $this->client->getCookies()->toArray());
			CCrmExternalSale::Update($this->externalSaleId, array('COOKIE' => serialize($this->cookies)));
		}

		$this->errors = array();
	}
	return $this->responseData;
}

Добавить комментарий