33namespace Http \Message \Formatter ;
44
55use Http \Message \Formatter ;
6+ use Psr \Http \Message \MessageInterface ;
67use Psr \Http \Message \RequestInterface ;
78use Psr \Http \Message \ResponseInterface ;
89
@@ -44,9 +45,7 @@ public function formatRequest(RequestInterface $request)
4445 $ message .= $ name .': ' .implode (', ' , $ values )."\n" ;
4546 }
4647
47- $ message .= "\n" .mb_substr ($ request ->getBody ()->__toString (), 0 , $ this ->maxBodyLength );
48-
49- return $ message ;
48+ return $ this ->addBody ($ request , $ message );
5049 }
5150
5251 /**
@@ -65,7 +64,27 @@ public function formatResponse(ResponseInterface $response)
6564 $ message .= $ name .': ' .implode (', ' , $ values )."\n" ;
6665 }
6766
68- $ message .= "\n" .mb_substr ($ response ->getBody ()->__toString (), 0 , $ this ->maxBodyLength );
67+ return $ this ->addBody ($ response , $ message );
68+ }
69+
70+ /**
71+ * Add the message body if the stream is seekable.
72+ *
73+ * @param MessageInterface $request
74+ * @param string $message
75+ *
76+ * @return string
77+ */
78+ private function addBody (MessageInterface $ request , $ message )
79+ {
80+ $ stream = $ request ->getBody ();
81+ if (!$ stream ->isSeekable () || $ this ->maxBodyLength === 0 ) {
82+ // Do not read the stream
83+ $ message .= "\n" ;
84+ } else {
85+ $ message .= "\n" .mb_substr ($ stream ->__toString (), 0 , $ this ->maxBodyLength );
86+ $ stream ->rewind ();
87+ }
6988
7089 return $ message ;
7190 }
0 commit comments