Your IP : 18.219.229.1


Current Path : /home/bitrix/ext_www/klimatlend.ua/bitrix/modules/sender/lib/internals/querycontroller/
Upload File :
Current File : /home/bitrix/ext_www/klimatlend.ua/bitrix/modules/sender/lib/internals/querycontroller/action.php

<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage sender
 * @copyright 2001-2017 Bitrix
 */
namespace Bitrix\Sender\Internals\QueryController;

use Bitrix\Main\ArgumentException;
use Bitrix\Main\HttpRequest;
use Bitrix\Main\Localization\Loc;


Loc::loadMessages(__FILE__);

class Action extends Base
{
	/** @var string $name Name. */
	protected $name;

	/** @var string $contentType Content type. */
	protected $contentType;

	/** @var callable $handler Handler. */
	protected $handler;

	/** @var string $postMethod Post method. */
	protected $requestMethod = Listener::REQUEST_METHOD_POST;

	/**
	 * Create instance.
	 * @param string $name Name.
	 * @return static
	 */
	public static function create($name)
	{
		return new static($name);
	}

	/**
	 * Action constructor.
	 * @param string $name Name.
	 * @param callable|null $handler Handler.
	 */
	public function __construct($name, $handler = null)
	{
		$this->name = $name;
		if ($handler)
		{
			$this->setHandler($handler);
		}
	}

	/**
	 * Get name.
	 *
	 * @return string
	 */
	public function getName()
	{
		return $this->name;
	}

	/**
	 * Set handler.
	 *
	 * @param callable $handler Handler.
	 * @return $this
	 * @throws ArgumentException
	 */
	public function setHandler($handler)
	{
		if (!is_callable($handler))
		{
			throw new ArgumentException("Argument `handler` should be callabe.");
		}

		$this->handler = $handler;
		return $this;
	}

	/**
	 * Get request method.
	 *
	 * @return string
	 */
	public function getRequestMethod()
	{
		return $this->requestMethod;
	}

	/**
	 * Set request method GET.
	 *
	 * @return $this
	 */
	public function setRequestMethodGet()
	{
		$this->requestMethod = Listener::REQUEST_METHOD_GET;
		return $this;
	}

	/**
	 * Run.
	 *
	 * @param HttpRequest $request
	 * @param Response $response
	 * @throws \Bitrix\Main\Error;
	 */
	public function run(HttpRequest $request, Response $response)
	{
		if (!$this->handler)
		{
			return;
		}

		static::call($this->handler, array($request, $response));
	}
}