ReleaseGroupFilter   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 3
dl 0
loc 51
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getEntity() 0 4 1
A parseResponse() 0 14 3
1
<?php
2
3
namespace MusicBrainz\Filters;
4
5
use MusicBrainz\Exception;
6
use MusicBrainz\MusicBrainz;
7
use MusicBrainz\ReleaseGroup;
8
9
/**
10
 * This is the release group filter and it contains
11
 * an array of valid argument types to be used
12
 * when querying the MusicBrainz web service.
13
 */
14
class ReleaseGroupFilter extends AbstractFilter implements FilterInterface
15
{
16
    protected $validArgTypes = array(
17
        'arid',
18
        'artist',
19
        'artistname',
20
        'comment',
21
        'creditname',
22
        'primarytype',
23
        'rgid',
24
        'releasegroup',
25
        'releasegroupaccent',
26
        'releases',
27
        'release',
28
        'reid',
29
        'secondarytype',
30
        'status',
31
        'tag',
32
        'type'
33
    );
34
35
    /**
36
     * @return string
37
     */
38
    public function getEntity()
39
    {
40
        return 'release-group';
41
    }
42
43
    /**
44
     * @param array       $response
45
     * @param MusicBrainz $brainz
46
     *
47
     * @throws \MusicBrainz\Exception
48
     * @return ReleaseGroup[]
49
     */
50
    public function parseResponse(array $response, MusicBrainz $brainz)
51
    {
52
53
        if (!isset($response['release-groups'])) {
54
            throw new Exception('No release groups found');
55
        }
56
57
        $releaseGroups = array();
58
        foreach ($response['release-groups'] as $releaseGroup) {
59
            $releaseGroups[] = new ReleaseGroup($releaseGroup, $brainz);
60
        }
61
62
        return $releaseGroups;
63
    }
64
}
65