Completed
Push — master ( e09e40...2564b7 )
by Nils
02:09
created

CookieMakerExtension::init()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 24
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 8.6845
c 0
b 0
f 0
cc 4
eloc 12
nc 6
nop 2
1
<?php
2
3
namespace whm\Smoke\Extensions\CookieMaker;
4
5
use whm\Smoke\Http\Session;
6
use whm\Smoke\Scanner\SessionContainer;
7
8
class CookieMakerExtension
9
{
10
    private $executable = 'CookieMaker.phar';
11
12
    private $sessionContainer;
13
14
    public function init(array $sessions, $executable = null)
15
    {
16
        if ($executable) {
17
            $this->executable = $executable;
18
        }
19
20
        $this->sessionContainer = new SessionContainer();
21
22
        foreach ($sessions as $sessionName => $session) {
23
            $command = $this->executable . " '" . json_encode($session) . "'";
24
25
            exec($command, $output, $return);
26
27
            $cookies = json_decode($output[0]);
28
29
            $session = new Session();
30
31
            foreach ($cookies as $key => $value) {
32
                $session->addCookie($key, $value);
33
            }
34
35
            $this->sessionContainer->addSession($sessionName, $session);
36
        }
37
    }
38
39
    /**
40
     * @Event("ResponseRetriever.setSessionContainer.before")
41
     */
42
    public function addSessions(SessionContainer $sessionContainer)
43
    {
44
        $sessionContainer->addContainer($this->sessionContainer);
45
    }
46
}
47