• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/googleapitransport.php
  • Класс: BitrixCalendarSyncGoogleApiTransport
  • Вызов: GoogleApiTransport::multipartDecode
public function multipartDecode($response): array
{
	$events = [];

	$boundary = $this->client->getHeaders()->getBoundary();

	$response = str_replace("--$boundary--", "--$boundary", $response);
	$parts = explode("--$boundaryrn", $response);

	foreach ($parts as $key => $part)
	{
		$part = trim($part);
		if (!empty($part))
		{
			$partEvent = explode("rnrn", $part);
			$data = $this->getMetaInfo($partEvent[1]);

			if ($data['status'] === 200)
			{
				$id = $this->getId($partEvent[0]);
				if ($id === null)
				{
					continue;
				}

				try
				{
					$event = WebJson::decode($partEvent[2]);
				}
				catch(Exception $exception)
				{
					continue;
				}

				$event['etag'] = $data['etag'];
				$events[$id] = $event;
			}
			else
			{
				AddMessage2Log('Event sync error. ID: ' . $this->getId($partEvent[0]));
			}
		}
	}

	return $events;
}