2
2
3
3
namespace OpenStack \Common \Error ;
4
4
5
- use function GuzzleHttp \Psr7 \str ;
6
5
use GuzzleHttp \Client ;
7
6
use GuzzleHttp \ClientInterface ;
8
7
use GuzzleHttp \Exception \ClientException ;
8
+ use Psr \Http \Message \MessageInterface ;
9
9
use Psr \Http \Message \RequestInterface ;
10
10
use Psr \Http \Message \ResponseInterface ;
11
11
@@ -73,6 +73,34 @@ private function linkIsValid($link)
73
73
return $ resp ->getStatusCode () < 400 ;
74
74
}
75
75
76
+ private function str (MessageInterface $ message )
77
+ {
78
+ if ($ message instanceof RequestInterface) {
79
+ $ msg = trim ($ message ->getMethod () . ' '
80
+ . $ message ->getRequestTarget ())
81
+ . ' HTTP/ ' . $ message ->getProtocolVersion ();
82
+ if (!$ message ->hasHeader ('host ' )) {
83
+ $ msg .= "\r\nHost: " . $ message ->getUri ()->getHost ();
84
+ }
85
+ } elseif ($ message instanceof ResponseInterface) {
86
+ $ msg = 'HTTP/ ' . $ message ->getProtocolVersion () . ' '
87
+ . $ message ->getStatusCode () . ' '
88
+ . $ message ->getReasonPhrase ();
89
+ } else {
90
+ throw new \InvalidArgumentException ('Unknown message type ' );
91
+ }
92
+
93
+ foreach ($ message ->getHeaders () as $ name => $ values ) {
94
+ $ msg .= "\r\n{$ name }: " . implode (', ' , $ values );
95
+ }
96
+
97
+ if ($ message ->getBody ()->getSize () < ini_get ('memory_limit ' )) {
98
+ $ msg .= "\r\n\r\n" . $ message ->getBody ();
99
+ }
100
+
101
+ return $ msg ;
102
+ }
103
+
76
104
/**
77
105
* Helper method responsible for constructing and returning {@see BadResponseError} exceptions.
78
106
*
@@ -89,10 +117,10 @@ public function httpError(RequestInterface $request, ResponseInterface $response
89
117
$ response ->getStatusCode (), $ response ->getReasonPhrase ());
90
118
91
119
$ message .= $ this ->header ('Request ' );
92
- $ message .= trim (str ($ request )) . PHP_EOL . PHP_EOL ;
120
+ $ message .= trim ($ this -> str ($ request )) . PHP_EOL . PHP_EOL ;
93
121
94
122
$ message .= $ this ->header ('Response ' );
95
- $ message .= trim (str ($ response )) . PHP_EOL . PHP_EOL ;
123
+ $ message .= trim ($ this -> str ($ response )) . PHP_EOL . PHP_EOL ;
96
124
97
125
$ message .= $ this ->header ('Further information ' );
98
126
$ message .= $ this ->getStatusCodeMessage ($ response ->getStatusCode ());
0 commit comments