Code Duplication    Length = 73-73 lines in 2 locations

Command/PublishCommand.php 1 location

@@ 28-100 (lines=73) @@
25
 *
26
 * @author Artem Henvald <[email protected]>
27
 */
28
final class PublishCommand extends AbstractCommand
29
{
30
    use ArgumentChannelTrait;
31
    use ArgumentDataTrait;
32
33
    protected static $defaultName = 'centrifugo:publish';
34
35
    /**
36
     * @param CentrifugoInterface $centrifugo
37
     * @param CentrifugoChecker   $centrifugoChecker
38
     */
39
    public function __construct(CentrifugoInterface $centrifugo, CentrifugoChecker $centrifugoChecker)
40
    {
41
        $this->centrifugoChecker = $centrifugoChecker;
42
43
        parent::__construct($centrifugo);
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49
    protected function configure(): void
50
    {
51
        $this
52
            ->setDescription('Publish data into channel')
53
            ->setDefinition(
54
                new InputDefinition([
55
                    new InputArgument('data', InputArgument::REQUIRED, 'Data in JSON format'),
56
                    new InputArgument('channel', InputArgument::REQUIRED, 'Channel name'),
57
                ])
58
            )
59
            ->setHelp(
60
                <<<'HELP'
61
The <info>%command.name%</info> command allows to publish data into channel:
62
63
<info>%command.full_name%</info> <comment>'{"foo":"bar"}'</comment> <comment>channelAbc</comment>
64
65
Read more at https://centrifugal.github.io/centrifugo/server/http_api/#publish
66
HELP
67
            )
68
        ;
69
    }
70
71
    /**
72
     * {@inheritdoc}
73
     */
74
    protected function initialize(InputInterface $input, OutputInterface $output): void
75
    {
76
        parent::initialize($input, $output);
77
78
        $this->initializeDataArgument($input);
79
        $this->initializeChannelArgument($input);
80
    }
81
82
    /**
83
     * {@inheritdoc}
84
     */
85
    protected function execute(InputInterface $input, OutputInterface $output): int
86
    {
87
        $io = new SymfonyStyle($input, $output);
88
89
        try {
90
            $this->centrifugo->publish($this->data, $this->channel);
91
            $io->success('DONE');
92
        } catch (\Throwable $e) {
93
            $io->error($e->getMessage());
94
95
            return $e->getCode();
96
        }
97
98
        return 0;
99
    }
100
}
101

Command/UnsubscribeCommand.php 1 location

@@ 28-100 (lines=73) @@
25
 *
26
 * @author Artem Henvald <[email protected]>
27
 */
28
final class UnsubscribeCommand extends AbstractCommand
29
{
30
    use ArgumentChannelTrait;
31
    use ArgumentUserTrait;
32
33
    protected static $defaultName = 'centrifugo:unsubscribe';
34
35
    /**
36
     * @param CentrifugoInterface $centrifugo
37
     * @param CentrifugoChecker   $centrifugoChecker
38
     */
39
    public function __construct(CentrifugoInterface $centrifugo, CentrifugoChecker $centrifugoChecker)
40
    {
41
        $this->centrifugoChecker = $centrifugoChecker;
42
43
        parent::__construct($centrifugo);
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49
    protected function configure(): void
50
    {
51
        $this
52
            ->setDescription('Unsubscribe user from channel')
53
            ->setDefinition(
54
                new InputDefinition([
55
                    new InputArgument('user', InputArgument::REQUIRED, 'User ID'),
56
                    new InputArgument('channel', InputArgument::REQUIRED, 'Channel name'),
57
                ])
58
            )
59
            ->setHelp(
60
                <<<'HELP'
61
The <info>%command.name%</info> command allows to unsubscribe user from channel:
62
63
<info>%command.full_name%</info> <comment>user123</comment> <comment>channelAbc</comment>
64
65
Read more at https://centrifugal.github.io/centrifugo/server/http_api/#unsubscribe
66
HELP
67
            )
68
        ;
69
    }
70
71
    /**
72
     * {@inheritdoc}
73
     */
74
    protected function initialize(InputInterface $input, OutputInterface $output): void
75
    {
76
        parent::initialize($input, $output);
77
78
        $this->initializeUserArgument($input);
79
        $this->initializeChannelArgument($input);
80
    }
81
82
    /**
83
     * {@inheritdoc}
84
     */
85
    protected function execute(InputInterface $input, OutputInterface $output): int
86
    {
87
        $io = new SymfonyStyle($input, $output);
88
89
        try {
90
            $this->centrifugo->unsubscribe($this->user, $this->channel);
91
            $io->success('DONE');
92
        } catch (\Throwable $e) {
93
            $io->error($e->getMessage());
94
95
            return $e->getCode();
96
        }
97
98
        return 0;
99
    }
100
}
101