Completed
Push — master ( a8a226...edd472 )
by Tomas
01:14
created

SegmentResolver   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 1
dl 0
loc 33
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A resolve() 0 14 1
A normalizeFilters() 0 12 4
1
<?php
2
3
namespace OneSignal\Resolver;
4
5
use Symfony\Component\OptionsResolver\Options;
6
use Symfony\Component\OptionsResolver\OptionsResolver;
7
8
class SegmentResolver implements ResolverInterface
9
{
10
    /**
11
     * {@inheritdoc}
12
     */
13
    public function resolve(array $data)
14
    {
15
        return (new OptionsResolver())
16
            ->setDefined('id')
17
            ->setAllowedTypes('id', 'string')
18
            ->setRequired('name')
19
            ->setAllowedTypes('name', 'string')
20
            ->setDefined('filters')
21
            ->setAllowedTypes('filters', 'array')
22
            ->setNormalizer('filters', function (Options $options, array $values) {
23
                return $this->normalizeFilters($options, $values);
24
            })
25
            ->resolve($data);
26
    }
27
28
    private function normalizeFilters(Options $options, array $values)
0 ignored issues
show
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
29
    {
30
        $filters = [];
31
32
        foreach ($values as $filter) {
33
            if (isset($filter['field']) || isset($filter['operator'])) {
34
                $filters[] = $filter;
35
            }
36
        }
37
38
        return $filters;
39
    }
40
}
41