Passed
Pull Request — master (#7)
by Moss
03:15
created

SetAllCacheModeCommand::configure()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 5
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 10
1
<?php
2
3
namespace Incapsula\Command;
4
5
use function json_encode;
6
use Symfony\Component\Console\Helper\Table;
7
use Symfony\Component\Console\Input\InputInterface;
8
use Symfony\Component\Console\Input\InputOption;
9
use Symfony\Component\Console\Output\OutputInterface;
10
11
class SetAllCacheModeCommand extends SitesListCommand
12
{
13
    protected function configure()
14
    {
15
        parent::configure();
16
17
        $this
18
            ->setName('sites:setCacheMode')
19
            ->addOption('json', null, InputOption::VALUE_NONE, 'Output as JSON')
20
            ->setDescription('List all cache rules for all sites');
21
    }
22
23
    protected function execute(InputInterface $input, OutputInterface $output)
24
    {
25
        $changes = $this->setCacheMode();
26
27
        if (true === $input->getOption('json')) {
28
            $output->write(json_encode($changes));
29
30
            return 0;
31
        }
32
33
        $output->writeln("sites that were changed in this run");
34
        $table = new Table($output);
35
        $table->setHeaders(['Site ID', 'Site Name','Return Message']);
36
37
        foreach ($changes as $changed) {
38
            $table->addRow([
39
                $changed['site_id'],
40
                $changed['domain'],
41
                $changed['return'],
42
            ]);
43
        }
44
45
        $table->render();
46
47
        return 0;
48
    }
49
50
    private function setCacheMode()
51
    {
52
        $api = $this->client->sites();
0 ignored issues
show
Unused Code introduced by
The assignment to $api is dead and can be removed.
Loading history...
53
        $sites = $this->getSites();
54
        $changed = [];
55
        foreach ($sites as $site) {
56
            $return_val = $this->client->sites()->setStaticCacheMode($site['site_id']);
57
            $mode = $site['acceleration_level'];
58
            if ($mode==='advanced'){
59
                array_push($changed,[
60
                    'site_id' => $site['site_id'],
61
                    'domain' => $site['domain'],
62
                    'return' => $return_val['res_message'],
63
                    ]);
64
            }
65
        }
66
67
        return $changed;
68
    }
69
}
70