Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/cartforge.co/app/code/Webkul/PrivateShop/Console/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/app/code/Webkul/PrivateShop/Console/PublishMessageCommand.php
<?php
/**
 * Webkul Software
 *
 * @category  Webkul
 * @package   Webkul_PrivateShop
 * @author    Webkul Software Private Limited
 * @copyright Webkul Software Private Limited (https://webkul.com)
 * @license   https://store.webkul.com/license.html
 */

namespace Webkul\PrivateShop\Console;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Webkul\PrivateShop\Api\Config\ConfigInterface as QueueConfig;
use Webkul\PrivateShop\Api\Queue\EncoderInterface;
use Webkul\PrivateShop\Api\Queue\PublisherInterface;
use Magento\Framework\App\State;

class PublishMessageCommand extends Command
{
    public const COMMAND_MESSAGES_PUBLISH = 'wk_mq:messages:publish';
    public const ARGUMENT_QUEUE_NAME = 'queue';
    public const ARGUMENT_MESSAGE_CONTENT = 'content';

    /**
     * @var QueueConfig
     */
    private $queueConfig;

    /**
     * @var EncoderInterface
     */
    private $messageEncoder;

    /**
     * @var PublisherInterface
     */
    private $publisher;

    /**
     * @var \Magento\Framework\App\State
     */
    protected $state;

    /**
     * @param State $state
     * @param QueueConfig $queueConfig
     * @param EncoderInterface $messageEncoder
     * @param PublisherInterface $publisher
     * @param string|null $name
     */
    public function __construct(
        State $state,
        QueueConfig $queueConfig,
        EncoderInterface $messageEncoder,
        PublisherInterface $publisher,
        $name = null
    ) {
        $this->state = $state;
        $this->queueConfig = $queueConfig;
        $this->messageEncoder = $messageEncoder;
        $this->publisher = $publisher;

        parent::__construct($name);
    }

    /**
     * @inheritdoc
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        try {
            // this tosses an error if the areacode is not set.
            $this->state->getAreaCode();
        } catch (\Exception $e) {
            $this->state->setAreaCode('adminhtml');
        }
        
        // Load and verify input arguments
        $queueName = $input->getArgument(self::ARGUMENT_QUEUE_NAME);
        $message = $input->getArgument(self::ARGUMENT_MESSAGE_CONTENT);

        // Decode message for publisher
        $message = $this->messageEncoder->decode($queueName, $message);

        // Publish message
        $this->publisher->publish(
            $queueName,
            $message
        );

        $output->writeln('Message published.');
    }

    /**
     * @inheritdoc
     */
    protected function configure()
    {
        $this->setName(self::COMMAND_MESSAGES_PUBLISH);
        $this->setDescription('Publish message to queue');

        $this->addArgument(
            self::ARGUMENT_QUEUE_NAME,
            InputArgument::REQUIRED,
            'The queue name.'
        );
        $this->addArgument(
            self::ARGUMENT_MESSAGE_CONTENT,
            InputArgument::REQUIRED,
            'The json encoded content of the message.'
        );

        parent::configure();
    }
}

Spamworldpro Mini