• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/engine/restmanager.php
  • Класс: BitrixRestEngineRestManager
  • Вызов: RestManager::processData
private function processData($result)
{
	if ($result instanceof DateTime)
	{
		return CRestUtil::convertDateTime($result);
	}

	if ($result instanceof Date)
	{
		return CRestUtil::convertDate($result);
	}

	if ($result instanceof Uri)
	{
		return $this->convertAjaxUriToRest($result);
	}

	if ($result instanceof EngineResponseDataTypePage)
	{
		if (method_exists($result, 'getId'))
		{
			$data = [$result->getId() => $this->processData($result->getIterator())];
		}
		else
		{
			$data = $this->processData($result->getIterator());
		}

		return array_merge($data, $this->getNavigationData($result));
	}

	if ($result instanceof ContractArrayable)
	{
		$result = $result->toArray();
	}

	if (is_array($result))
	{
		foreach ($result as $key => $item)
		{
			if ($item instanceof EngineResponseDataTypeContentUri)
			{
				$result[$key . "Machine"] = $this->processData($item);
				$result[$key] = $this->processData(new Uri($item));
			}
			else
			{
				$result[$key] = $this->processData($item);
			}

		}
	}
	elseif ($result instanceof Traversable)
	{
		$newResult = [];
		foreach ($result as $key => $item)
		{
			$newResult[$key] = $this->processData($item);
		}

		$result = $newResult;
	}

	return $result;
}