tgbotlib/src/TgBotLib/Objects/ChatBoostSource.php
2024-10-06 15:45:44 -04:00

49 lines
No EOL
1.5 KiB
PHP

<?php
namespace TgBotLib\Objects;
use InvalidArgumentException;
use TgBotLib\Enums\Types\ChatBoostSourceType;
use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\ChatBoostSource\ChatBoostSourceGiftCode;
use TgBotLib\Objects\ChatBoostSource\ChatBoostSourceGiveaway;
use TgBotLib\Objects\ChatBoostSource\ChatBoostSourcePremium;
abstract class ChatBoostSource implements ObjectTypeInterface
{
protected ChatBoostSourceType $source;
/**
* Source of the boost
*
* @return ChatBoostSourceType
*/
public function getSource(): ChatBoostSourceType
{
return $this->source;
}
/**
* @inheritDoc
*/
public abstract function toArray(): ?array;
/**
* @inheritDoc
*/
public static function fromArray(?array $data): ?ChatBoostSource
{
if($data === null)
{
return null;
}
return match (ChatBoostSourceType::tryFrom($data['source']))
{
ChatBoostSourceType::GIFT_CODE => ChatBoostSourceGiftCode::fromArray($data),
ChatBoostSourceType::PREMIUM => ChatBoostSourcePremium::fromArray($data),
ChatBoostSourceType::GIVEAWAY => ChatBoostSourceGiveaway::fromArray($data),
default => throw new InvalidArgumentException('Unknown source type')
};
}
}