Completed
Push — master ( f2d77a...6972d7 )
by Jasper
11s
created

LinksParser::buildLink()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 3
nc 2
nop 1
1
<?php
2
3
namespace Swis\JsonApi\Client\JsonApi;
4
5
use Art4\JsonApiClient\Meta as JsonApiMeta;
6
use Swis\JsonApi\Client\Link;
7
use Swis\JsonApi\Client\Links;
8
use Swis\JsonApi\Client\Meta;
9
10
class LinksParser
11
{
12
    /**
13
     * @param array $links
14
     *
15
     * @return \Swis\JsonApi\Client\Links
16
     */
17
    public function parse(array $links)
18
    {
19
        return new Links(
20
            array_map(
21
                function ($link) {
22
                    return $this->buildLink($link);
23
                },
24
                $links
25
            )
26
        );
27
    }
28
29
    /**
30
     * @param \Art4\JsonApiClient\Link|string $link
31
     *
32
     * @return \Swis\JsonApi\Client\Link
33
     */
34
    private function buildLink($link): Link
35
    {
36
        if (is_string($link)) {
37
            return new Link($link);
38
        }
39
40
        return new Link($link->get('href'), $link->has('meta') ? $this->buildMeta($link->get('meta')) : null);
41
    }
42
43
    /**
44
     * @param \Art4\JsonApiClient\Meta $meta
45
     *
46
     * @return \Swis\JsonApi\Client\Meta
47
     */
48
    private function buildMeta(JsonApiMeta $meta): Meta
49
    {
50
        return new Meta($meta->asArray(true));
51
    }
52
}
53