Completed
Push — master ( 158f00...4ee9ec )
by San
06:17 queued 02:55
created

JsonInspector::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace Behatch\Json;
4
5
use JsonSchema\RefResolver;
6
use JsonSchema\Validator;
7
use JsonSchema\Uri\UriRetriever;
8
use Symfony\Component\PropertyAccess\PropertyAccessor;
9
10
class JsonInspector
11
{
12
    private $evaluationMode;
13
14
    private $accessor;
15
16
    public function __construct($evaluationMode)
17
    {
18
        $this->evaluationMode = $evaluationMode;
19
        $this->accessor = new PropertyAccessor(false, true);
20
    }
21
22
    public function evaluate(Json $json, $expression)
23
    {
24
        if ($this->evaluationMode === 'javascript') {
25
            $expression = str_replace('->', '.', $expression);
26
        }
27
28
        try {
29
            return $json->read($expression, $this->accessor);
30
        } catch (\Exception $e) {
31
            throw new \Exception("Failed to evaluate expression '$expression'");
32
        }
33
    }
34
35
    public function validate(Json $json, JsonSchema $schema)
36
    {
37
        return $schema
38
            ->resolve(new RefResolver(new UriRetriever))
39
            ->validate($json, new Validator)
40
        ;
41
    }
42
}
43