Passed
Push — master ( d77012...65951f )
by Nils
02:18
created

IetfFormat::handle()   B

Complexity

Conditions 6
Paths 12

Size

Total Lines 46
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 27
dl 0
loc 46
rs 8.8657
c 0
b 0
f 0
cc 6
nc 12
nop 3
1
<?php
2
3
namespace Leankoala\HealthFoundation\Result\Format\Ietf;
4
5
use Leankoala\HealthFoundation\Check\Check;
6
use Leankoala\HealthFoundation\Check\Result;
7
use Leankoala\HealthFoundation\Result\Format\Format;
8
use Leankoala\HealthFoundation\RunResult;
9
10
class IetfFormat implements Format
11
{
12
    const DEFAULT_OUTPUT_PASS = 'Passed.';
13
    const DEFAULT_OUTPUT_WARN = 'Warning.';
14
    const DEFAULT_OUTPUT_FAIL = 'Failed.';
15
16
    public function handle(RunResult $runResult, $passMessage = null, $failMessage = null)
17
    {
18
        header('Content-Type: application/json');
19
20
        if ($runResult->getStatus() == Result::STATUS_PASS) {
21
            if (is_null($passMessage)) {
22
                $output = self::DEFAULT_OUTPUT_PASS;
23
            } else {
24
                $output = $passMessage;
25
            }
26
        } else {
27
            if (is_null($failMessage)) {
28
                $output = self::DEFAULT_OUTPUT_FAIL;
29
            } else {
30
                $output = $failMessage;
31
            }
32
        }
33
34
        $details = [];
35
36
        foreach ($runResult->getResults() as $resultArray) {
37
            /** @var Result $result */
38
            $result = $resultArray['result'];
39
40
            /** @var Check $check */
41
            $check = $resultArray['check'];
42
43
            if (is_string($resultArray['identifier'])) {
44
                $identifier = $resultArray['identifier'];
45
            } else {
46
                $identifier = $check->getIdentifier();
47
            }
48
49
            $details[$identifier] = [
50
                'status' => $result->getStatus(),
51
                'output' => $result->getMessage()
52
            ];
53
        }
54
55
        $resultArray = [
56
            'status' => $runResult->getStatus(),
57
            'output' => $output,
58
            'details' => $details
59
        ];
60
61
        echo json_encode($resultArray, JSON_PRETTY_PRINT);
62
    }
63
}
64