Issues (17)

lib/JobExecutionException.php (1 issue)

Labels
Severity
1
<?php
2
/*
3
 * The MIT License
4
 *
5
 * Copyright 2016 BCL Technologies.
6
 *
7
 * Permission is hereby granted, free of charge, to any person obtaining a copy
8
 * of this software and associated documentation files (the "Software"), to deal
9
 * in the Software without restriction, including without limitation the rights
10
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
 * copies of the Software, and to permit persons to whom the Software is
12
 * furnished to do so, subject to the following conditions:
13
 *
14
 * The above copyright notice and this permission notice shall be included in
15
 * all copies or substantial portions of the Software.
16
 *
17
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
 * THE SOFTWARE.
24
 */
25
26
namespace Bcl\EasyPdfCloud;
27
28
use Exception;
29
use function mb_strlen;
30
use function count;
31
32
class JobExecutionException extends Exception
33
{
34
    private $jobInfo;
35
36
    public function __construct(JobInfo $jobInfo = null, $code = 0, Exception $previous = null)
37
    {
38
        $message = static::toString($jobInfo);
0 ignored issues
show
It seems like $jobInfo can also be of type null; however, parameter $jobInfo of Bcl\EasyPdfCloud\JobExecutionException::toString() does only seem to accept Bcl\EasyPdfCloud\JobInfo, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

38
        $message = static::toString(/** @scrutinizer ignore-type */ $jobInfo);
Loading history...
39
40
        parent::__construct($message, $code, $previous);
41
42
        $this->jobInfo = $jobInfo;
43
    }
44
45
    public function getJobInfo()
46
    {
47
        return $this->jobInfo;
48
    }
49
50
    private static function toString(JobInfo $jobInfo)
51
    {
52
        $jobError = null;
53
54
        $jobDetail = $jobInfo->getDetail();
55
        if (null !== $jobDetail) {
56
            $jobErrors = $jobDetail->getErrors();
57
            if (null !== $jobErrors && count($jobErrors) > 0) {
58
                $jobError = $jobErrors[0];
59
            }
60
        }
61
62
        if (!$jobError instanceof JobError) {
63
            return 'Job execution failed with unknown error';
64
        }
65
66
        $message = $jobError->getMessage();
67
        $status = $jobInfo->getStatus();
68
        if (0 === mb_strlen($message, Constraints::UTF_8)) {
69
            if (JobInfo::STATUS_FAILED === $status) {
70
                return 'Job execution failed';
71
            } elseif (JobInfo::STATUS_CANCELLED === $status) {
72
                return 'Job execution cancelled';
73
            }
74
75
            return 'Job execution failed with unknown error';
76
        }
77
78
        $detail = $jobError->getDetail();
79
        if (0 === mb_strlen($detail, Constraints::UTF_8)) {
80
            return $message;
81
        }
82
83
        $string = $detail;
84
85
        $extraDetail = $jobError->getExtraDetail();
86
        if (mb_strlen($extraDetail, Constraints::UTF_8) > 0) {
87
            $string .= ' (' . $extraDetail . ')';
88
        }
89
90
        return $string;
91
    }
92
}
93