• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/apiclient.php
  • Класс: BitrixCalendarSyncOffice365ApiClient
  • Вызов: ApiClient::multipartDecode
protected function multipartDecode(string $response, string $boundary): array
{
	$events = [];

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

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

			if ($data['status'] === 200)
			{
				if ($id === null)
				{
					continue;
				}

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

				$event['etag'] = $data['etag'];
				$events[$id] = $event;
			}
			else
			{
				AddMessage2Log('Event sync error. ID: ' . ($id ?? 'unknown'));
			}
		}
	}

	return $events;
}