Completed
Push — rework ( b64e66...30a2d6 )
by Markus
02:47
created

Handler::handle()   B

Complexity

Conditions 6
Paths 5

Size

Total Lines 27
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 0
Metric Value
cc 6
eloc 15
nc 5
nop 0
dl 0
loc 27
ccs 0
cts 16
cp 0
crap 42
rs 8.439
c 0
b 0
f 0
1
<?php
2
3
// Starting point, handle incoming request and hand over to more specific handler
4
5
namespace SSpkS;
6
7
use \SSpkS\Handler\BrowserAllPackagesListHandler;
8
use \SSpkS\Handler\BrowserDeviceListHandler;
9
use \SSpkS\Handler\BrowserPackageListHandler;
10
use \SSpkS\Handler\NotFoundHandler;
11
use \SSpkS\Handler\SynologyHandler;
12
13
class Handler
14
{
15
    private $config;
16
17
    public function __construct(\SSpkS\Config $config)
18
    {
19
        $this->config = $config;
20
    }
21
22
    public function handle()
23
    {
24
        // TODO: Probably walk through all known handlers and query them whether they're
25
        //       responsible/capable for answering the request or not. Take the best match.
26
27
        if (isset($_REQUEST['unique']) && substr($_REQUEST['unique'], 0, 8) == 'synology') {
28
            $handler = new SynologyHandler($this->config);
29
        } elseif ($_SERVER['REQUEST_METHOD'] == 'GET') {
30
            // GET-request, probably browser --> show HTML
31
            $arch     = trim($_GET['arch']);
32
            $fullList = trim($_GET['fulllist']);
33
34
            if ($arch) {
35
                // Architecture is set --> show packages for that arch
36
                $handler = new BrowserPackageListHandler($this->config);
37
            } elseif ($fullList) {
38
                // No architecture, but full list of packages requested --> show simple list
39
                $handler = new BrowserAllPackagesListHandler($this->config);
40
            } else {
41
                // Nothing specific requested --> show models overview
42
                $handler = new BrowserDeviceListHandler($this->config);
43
            }
44
        } else {
45
            $handler = new NotFoundHandler($this->config);
46
        }
47
        $handler->handle();
48
    }
49
}
50