Completed
Push — master ( 64470f...3a69fd )
by Florian
02:24
created

JsonParser::parse()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 13
ccs 0
cts 12
cp 0
rs 9.4285
cc 3
eloc 8
nc 3
nop 1
crap 12
1
<?php
2
3
namespace Laposte\DatanovaBundle\Parser;
4
5
use Laposte\DatanovaBundle\Service\Finder;
6
7
class JsonParser implements ParserInterface
8
{
9
    /** File format */
10
    const FORMAT = 'json';
11
12
    /**
13
     * @var Finder
14
     */
15
    private $finder;
16
17
    /**
18
     * @param Finder $finder
19
     */
20
    public function __construct(Finder $finder)
21
    {
22
        $this->finder = $finder;
23
    }
24
25
    /**
26
     * @param string $dataset
27
     *
28
     * @return false|array
29
     */
30
    public function parse($dataset)
31
    {
32
        $data = false;
33
        $path = $this->finder->findDataset($dataset, self::FORMAT);
34
        if (false !== $path) {
35
            $content = $this->finder->getContent($path);
36
            if (null !== $content) {
37
                $data = $this->getFieldsFromContent($content);
38
            }
39
        }
40
41
        return $data;
42
    }
43
44
    /**
45
     * @param string $content json content
46
     *
47
     * @return array
48
     */
49
    private function getFieldsFromContent($content)
50
    {
51
        $data = array();
52
        $content = json_decode($content, true);
53
        foreach ($content as $record) {
54
            $data[] = $record['fields'];
55
        }
56
57
        return $data;
58
    }
59
}
60