AbstractController::resolveRequestParameters()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 20
rs 9.4285
cc 3
eloc 14
nc 2
nop 4
1
<?php
2
/**
3
 * Push notification server example (http://github.com/juliangut/tify_example)
4
 *
5
 * @link https://github.com/juliangut/tify_example for the canonical source repository
6
 *
7
 * @license https://github.com/juliangut/tify_example/blob/master/LICENSE
8
 */
9
10
namespace Jgut\Pusher\Controller;
11
12
use Psr\Http\Message\ServerRequestInterface;
13
use Symfony\Component\OptionsResolver\OptionsResolver;
14
15
/**
16
 * Class AbstractController
17
 */
18
abstract class AbstractController
19
{
20
    /**
21
     * @param ServerRequestInterface $request
22
     * @param array                  $definedParameters
23
     * @param array                  $defaultParameters
24
     * @param array                  $requiredParameters
25
     *
26
     * @throws \RuntimeException
27
     *
28
     * @return array
29
     */
30
    protected function resolveRequestParameters(
31
        ServerRequestInterface $request,
32
        array $definedParameters = [],
33
        array $defaultParameters = [],
34
        array $requiredParameters = []
35
    ) {
36
        $parametersResolver = new OptionsResolver();
37
38
        $parametersResolver->setDefined($definedParameters);
39
        $parametersResolver->setDefaults($defaultParameters);
40
        $parametersResolver->setRequired($requiredParameters);
41
42
        $parameters = $request->getParsedBody();
43
44
        try {
45
            return $parametersResolver->resolve(is_array($parameters) ? $parameters : []);
46
        } catch (\Exception $exception) {
47
            throw new \RuntimeException(str_replace(' option', ' parameter', $exception->getMessage()), 0, $exception);
48
        }
49
    }
50
}
51