1
+ <?php
2
+
3
+ namespace AndroidSmsGateway \Exceptions ;
4
+
5
+ use Psr \Http \Client \RequestExceptionInterface ;
6
+ use Psr \Http \Message \RequestInterface ;
7
+ use Psr \Http \Message \ResponseInterface ;
8
+
9
+ final class HttpException extends \RuntimeException implements RequestExceptionInterface {
10
+ /**
11
+ * @var ResponseInterface
12
+ */
13
+ protected $ response ;
14
+
15
+ /**
16
+ * @var RequestInterface
17
+ */
18
+ protected $ request ;
19
+
20
+ /**
21
+ * @param string $message
22
+ */
23
+ public function __construct (
24
+ $ message ,
25
+ RequestInterface $ request ,
26
+ ResponseInterface $ response ,
27
+ \Exception $ previous = null
28
+ ) {
29
+ parent ::__construct ($ message , 0 , $ previous );
30
+
31
+ $ this ->request = $ request ;
32
+ $ this ->response = $ response ;
33
+
34
+ $ this ->code = $ response ->getStatusCode ();
35
+ }
36
+
37
+ /**
38
+ * {@inheritdoc}
39
+ */
40
+ public function getRequest (): RequestInterface {
41
+ return $ this ->request ;
42
+ }
43
+
44
+ /**
45
+ * Returns the response.
46
+ *
47
+ * @return ResponseInterface
48
+ */
49
+ public function getResponse () {
50
+ return $ this ->response ;
51
+ }
52
+
53
+ /**
54
+ * Factory method to create a new exception with a normalized error message.
55
+ */
56
+ public static function create (
57
+ RequestInterface $ request ,
58
+ ResponseInterface $ response ,
59
+ \Exception $ previous = null
60
+ ): self {
61
+ $ message = sprintf (
62
+ '[url] %s [http method] %s [status code] %s [reason phrase] %s ' ,
63
+ $ request ->getRequestTarget (),
64
+ $ request ->getMethod (),
65
+ $ response ->getStatusCode (),
66
+ $ response ->getReasonPhrase ()
67
+ );
68
+
69
+ return new static ($ message , $ request , $ response , $ previous );
70
+ }
71
+ }
0 commit comments