Passed
Push — master ( e46af3...187809 )
by Nils
02:00
created

IetfFormat::getOutput()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 11
nc 4
nop 3
dl 0
loc 17
rs 9.9
c 0
b 0
f 0
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
        $output = $this->getOutput($runResult, $passMessage, $failMessage);
21
22
        $details = [];
23
24
        foreach ($runResult->getResults() as $resultArray) {
25
            /** @var Result $result */
26
            $result = $resultArray['result'];
27
28
            /** @var Check $check */
29
            $check = $resultArray['check'];
30
31
32
            if (is_string($resultArray['identifier'])) {
33
                $identifier = $resultArray['identifier'];
34
            } else {
35
                $identifier = $check->getIdentifier();
36
            }
37
38
            $details[$identifier] = [
39
                'status' => $result->getStatus(),
40
                'output' => $result->getMessage()
41
            ];
42
43
            $description = $resultArray['description'];
44
            if ($description) {
45
                $details[$identifier]['description'] = $description;
46
            }
47
        }
48
49
        $resultArray = [
50
            'status' => $runResult->getStatus(),
51
            'output' => $output,
52
            'details' => $details
53
        ];
54
55
        echo json_encode($resultArray, JSON_PRETTY_PRINT);
56
    }
57
58
    private function getOutput(RunResult $runResult, $passMessage = null, $failMessage = null)
59
    {
60
        if ($runResult->getStatus() == Result::STATUS_PASS) {
61
            if (is_null($passMessage)) {
62
                $output = self::DEFAULT_OUTPUT_PASS;
63
            } else {
64
                $output = $passMessage;
65
            }
66
        } else {
67
            if (is_null($failMessage)) {
68
                $output = self::DEFAULT_OUTPUT_FAIL;
69
            } else {
70
                $output = $failMessage;
71
            }
72
        }
73
74
        return $output;
75
    }
76
}
77