ApiErrorException   A
last analyzed

Complexity

Total Complexity 21

Size/Duplication

Total Lines 187
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 37
c 1
b 0
f 0
dl 0
loc 187
rs 10
wmc 21

15 Methods

Rating   Name   Duplication   Size   Complexity  
A __toString() 0 6 3
A getHttpBody() 0 3 1
A factory() 0 23 3
A setJsonBody() 0 3 1
A getJsonBody() 0 3 1
A setHttpBody() 0 3 1
A setHttpStatus() 0 3 1
A constructErrorObject() 0 7 3
A getError() 0 3 1
A setHttpHeaders() 0 3 1
A getHttpStatus() 0 3 1
A getHttpHeaders() 0 3 1
A getRequestId() 0 3 1
A setBsecureCode() 0 3 1
A setError() 0 3 1
1
<?php
2
3
namespace bSecure\Exception;
4
5
/**
6
 * Implements properties and methods common to all bSecure exceptions.
7
 */
8
abstract class ApiErrorException extends \Exception implements ExceptionInterface
9
{
10
    protected $error;
11
    protected $httpBody;
12
    protected $httpHeaders;
13
    protected $httpStatus;
14
    protected $jsonBody;
15
    protected $requestId;
16
    protected $code;
17
18
    /**
19
     * Creates a new API error exception.
20
     *
21
     * @param string $message the exception message
22
     * @param null|int $httpStatus the HTTP status code
23
     * @param null|string $httpBody the HTTP body as a string
24
     * @param null|array $jsonBody the JSON deserialized body
25
     * @param null|array|\bSecure\Util\CaseInsensitiveArray $httpHeaders the HTTP headers array
26
     * @param null|string $code the bSecure error code
27
     *
28
     * @return static
29
     */
30
    public static function factory(
31
      $message,
32
      $httpStatus = null,
33
      $httpBody = null,
34
      $jsonBody = null,
35
      $httpHeaders = null,
36
      $code = null
37
    ) {
38
        $instance = new static($message);
39
        $instance->setHttpStatus($httpStatus);
40
        $instance->setHttpBody($httpBody);
41
        $instance->setJsonBody($jsonBody);
42
        $instance->setHttpHeaders($httpHeaders);
43
        $instance->setBsecureCode($code);
44
45
        $instance->setRequestId(null);
0 ignored issues
show
Bug introduced by
The method setRequestId() does not exist on bSecure\Exception\ApiErrorException. ( Ignorable by Annotation )

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

45
        $instance->/** @scrutinizer ignore-call */ 
46
                   setRequestId(null);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
46
        if ($httpHeaders && isset($httpHeaders['Request-Id'])) {
47
            $instance->setRequestId($httpHeaders['Request-Id']);
48
        }
49
50
        $instance->setError($instance->constructErrorObject());
51
52
        return $instance;
53
    }
54
55
    /**
56
     * Gets the bSecure error object.
57
     *
58
     * @return null|\bSecure\ErrorObject
0 ignored issues
show
Bug introduced by
The type bSecure\ErrorObject was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
59
     */
60
    public function getError()
61
    {
62
        return $this->error;
63
    }
64
65
    /**
66
     * Sets the bSecure error object.
67
     *
68
     * @param null|\bSecure\ErrorObject $error
69
     */
70
    public function setError($error)
71
    {
72
        $this->error = $error;
73
    }
74
75
    /**
76
     * Gets the HTTP body as a string.
77
     *
78
     * @return null|string
79
     */
80
    public function getHttpBody()
81
    {
82
        return $this->httpBody;
83
    }
84
85
    /**
86
     * Sets the HTTP body as a string.
87
     *
88
     * @param null|string $httpBody
89
     */
90
    public function setHttpBody($httpBody)
91
    {
92
        $this->httpBody = $httpBody;
93
    }
94
95
    /**
96
     * Gets the HTTP headers array.
97
     *
98
     * @return null|array|\bSecure\Util\CaseInsensitiveArray
99
     */
100
    public function getHttpHeaders()
101
    {
102
        return $this->httpHeaders;
103
    }
104
105
    /**
106
     * Sets the HTTP headers array.
107
     *
108
     * @param null|array|\bSecure\Util\CaseInsensitiveArray $httpHeaders
109
     */
110
    public function setHttpHeaders($httpHeaders)
111
    {
112
        $this->httpHeaders = $httpHeaders;
113
    }
114
115
    /**
116
     * Gets the HTTP status code.
117
     *
118
     * @return null|int
119
     */
120
    public function getHttpStatus()
121
    {
122
        return $this->httpStatus;
123
    }
124
125
    /**
126
     * Sets the HTTP status code.
127
     *
128
     * @param null|int $httpStatus
129
     */
130
    public function setHttpStatus($httpStatus)
131
    {
132
        $this->httpStatus = $httpStatus;
133
    }
134
135
    /**
136
     * Gets the JSON deserialized body.
137
     *
138
     * @return null|array<string, mixed>
139
     */
140
    public function getJsonBody()
141
    {
142
        return $this->jsonBody;
143
    }
144
145
    /**
146
     * Sets the JSON deserialized body.
147
     *
148
     * @param null|array<string, mixed> $jsonBody
149
     */
150
    public function setJsonBody($jsonBody)
151
    {
152
        $this->jsonBody = $jsonBody;
153
    }
154
155
    /**
156
     * Gets the bSecure request ID.
157
     *
158
     * @return null|string
159
     */
160
    public function getRequestId()
161
    {
162
        return $this->requestId;
163
    }
164
165
    /**
166
     * Sets the bSecure error code.
167
     *
168
     * @param null|string $code
169
     */
170
    public function setBsecureCode($code)
171
    {
172
        $this->code = $code;
173
    }
174
175
    /**
176
     * Returns the string representation of the exception.
177
     *
178
     * @return string
179
     */
180
    public function __toString()
181
    {
182
        $statusStr = (null === $this->getHttpStatus()) ? '' : "(Status {$this->getHttpStatus()}) ";
183
        $idStr = (null === $this->getRequestId()) ? '' : "(Request {$this->getRequestId()}) ";
184
185
        return "{$statusStr}{$idStr}{$this->getMessage()}";
186
    }
187
188
    protected function constructErrorObject()
189
    {
190
        if (null === $this->jsonBody || !\array_key_exists('error', $this->jsonBody)) {
191
            return null;
192
        }
193
194
        return \bSecure\ErrorObject::constructFrom($this->jsonBody['error']);
195
    }
196
}