Your IP : 3.145.45.223


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/location/lib/entity/source/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/modules/location/lib/entity/source/factory.php

<?php

namespace Bitrix\Location\Entity\Source;

use Bitrix\Location\Entity\Source;
use Bitrix\Location\Exception\RuntimeException;
use Bitrix\Location\Source\Google\GoogleSource;
use Bitrix\Location\Source\Osm\OsmSource;

/**
 * Class Factory
 * @package Bitrix\Location\Entity\Source
 * @internal
 */
final class Factory
{
	public const GOOGLE_SOURCE_CODE = 'GOOGLE';
	public const OSM_SOURCE_CODE = 'OSM';

	/**
	 * @param string $code
	 * @return Source
	 */
	public static function makeSource(string $code): Source
	{
		$class = null;

		switch ($code)
		{
			case static::GOOGLE_SOURCE_CODE:
				$class = GoogleSource::class;
				break;
			case static::OSM_SOURCE_CODE:
				$class = OsmSource::class;
				break;
		}

		if (is_null($class))
		{
			throw new RuntimeException(sprintf('Unexpected source code - %s', $code));
		}

		/** @var Source $source */
		return (new $class())->setCode($code);
	}
}