3
3
namespace Http \Message \Formatter ;
4
4
5
5
use Http \Message \Formatter ;
6
+ use Psr \Http \Message \MessageInterface ;
6
7
use Psr \Http \Message \RequestInterface ;
7
8
use Psr \Http \Message \ResponseInterface ;
8
9
@@ -44,9 +45,7 @@ public function formatRequest(RequestInterface $request)
44
45
$ message .= $ name .': ' .implode (', ' , $ values )."\n" ;
45
46
}
46
47
47
- $ message .= "\n" .mb_substr ($ request ->getBody ()->__toString (), 0 , $ this ->maxBodyLength );
48
-
49
- return $ message ;
48
+ return $ this ->addBody ($ request , $ message );
50
49
}
51
50
52
51
/**
@@ -65,7 +64,27 @@ public function formatResponse(ResponseInterface $response)
65
64
$ message .= $ name .': ' .implode (', ' , $ values )."\n" ;
66
65
}
67
66
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
+ }
69
88
70
89
return $ message ;
71
90
}
0 commit comments