Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
BaseController
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
100.00%
4 / 4
10
100.00% covered (success)
100.00%
1 / 1
 __invoke
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 buildQuery
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
4
 buildHashFromParameterList
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
4
 getWebcallDisplayUrl
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3/**
4 * @package Zmscalldisplay
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KGd
6 *
7 */
8
9namespace BO\Zmscalldisplay;
10
11use Psr\Http\Message\RequestInterface;
12use Psr\Http\Message\ResponseInterface;
13use BO\Slim\Helper as SlimHelper;
14
15/**
16 * @SuppressWarnings(NumberOfChildren)
17 *
18 */
19abstract class BaseController extends \BO\Slim\Controller
20{
21    protected static $hashParameter = ['webcalldisplay' => ['collections', 'queue']];
22
23    public function __invoke(RequestInterface $request, ResponseInterface $response, array $args)
24    {
25        $request = $this->initRequest($request);
26        $noCacheResponse = \BO\Slim\Render::withLastModified($response, time(), '0');
27        return $this->readResponse($request, $noCacheResponse, $args);
28    }
29
30    protected function buildQuery(string $target, RequestInterface $request)
31    {
32        $queryArr  = [];
33        $allParams = array_merge(static::$hashParameter[$target], ['template']);
34        $currentQP = $request->getQueryParams();
35        foreach ($allParams as $parameter) {
36            if (isset($currentQP[$parameter]) && $currentQP[$parameter]) {
37                $queryArr[$parameter] = $currentQP[$parameter];
38            }
39        }
40
41        $queryArr['hmac'] = $this->buildHashFromParameterList($target, $request);
42
43        return http_build_query($queryArr);
44    }
45
46    protected function buildHashFromParameterList(string $target, RequestInterface $request)
47    {
48        $paramsToHash = [];
49        $currentQP = $request->getQueryParams();
50        foreach (static::$hashParameter[$target] as $parameter) {
51            if (isset($currentQP[$parameter]) && $currentQP[$parameter]) {
52                $paramsToHash[$parameter] = $currentQP[$parameter];
53            }
54        }
55
56        return SlimHelper::hashQueryParameters(
57            $target,
58            $paramsToHash,
59            static::$hashParameter[$target]
60        );
61    }
62
63    /**
64     * @SuppressWarnings(UnusedFormalParameter)
65     *
66     * @param RequestInterface $request
67     * @param array $parameters
68     * @return string
69     */
70    protected function getWebcallDisplayUrl(RequestInterface $request, array $parameters)
71    {
72        $target = 'webcalldisplay';
73        $config = \App::$http->readGetResult('/config/')->getEntity();
74
75        $url = '' . $config->toProperty()->webcalldisplay->baseUrl->get();
76        $url .= '?' . $this->buildQuery($target, $request);
77
78        return $url;
79    }
80}