Open Journal Systems  3.3.0
FullHttpMessageFormatter.php
1 <?php
2 
3 namespace Http\Message\Formatter;
4 
9 
16 {
22  private $maxBodyLength;
23 
27  public function __construct($maxBodyLength = 1000)
28  {
29  $this->maxBodyLength = $maxBodyLength;
30  }
31 
35  public function formatRequest(RequestInterface $request)
36  {
37  $message = sprintf(
38  "%s %s HTTP/%s\n",
39  $request->getMethod(),
40  $request->getRequestTarget(),
41  $request->getProtocolVersion()
42  );
43 
44  foreach ($request->getHeaders() as $name => $values) {
45  $message .= $name.': '.implode(', ', $values)."\n";
46  }
47 
48  return $this->addBody($request, $message);
49  }
50 
54  public function formatResponse(ResponseInterface $response)
55  {
56  $message = sprintf(
57  "HTTP/%s %s %s\n",
58  $response->getProtocolVersion(),
59  $response->getStatusCode(),
60  $response->getReasonPhrase()
61  );
62 
63  foreach ($response->getHeaders() as $name => $values) {
64  $message .= $name.': '.implode(', ', $values)."\n";
65  }
66 
67  return $this->addBody($response, $message);
68  }
69 
78  private function addBody(MessageInterface $request, $message)
79  {
80  $stream = $request->getBody();
81  if (!$stream->isSeekable() || 0 === $this->maxBodyLength) {
82  // Do not read the stream
83  return $message."\n";
84  }
85 
86  if (null === $this->maxBodyLength) {
87  $message .= "\n".$stream->__toString();
88  } else {
89  $message .= "\n".mb_substr($stream->__toString(), 0, $this->maxBodyLength);
90  }
91 
92  $stream->rewind();
93 
94  return $message;
95  }
96 }
Http\Message\Formatter\FullHttpMessageFormatter\formatResponse
formatResponse(ResponseInterface $response)
Definition: FullHttpMessageFormatter.php:57
Psr\Http\Message\MessageInterface
Definition: vendor/psr/http-message/src/MessageInterface.php:17
Psr\Http\Message\RequestInterface
Definition: vendor/psr/http-message/src/RequestInterface.php:24
Psr\Http\Message\RequestInterface\getRequestTarget
getRequestTarget()
Psr\Http\Message\MessageInterface\getBody
getBody()
Http\Message\Formatter\FullHttpMessageFormatter\__construct
__construct($maxBodyLength=1000)
Definition: FullHttpMessageFormatter.php:30
Http\Message\Formatter\FullHttpMessageFormatter
Definition: FullHttpMessageFormatter.php:15
Http\Message\Formatter
Definition: CurlCommandFormatter.php:3
Psr\Http\Message\RequestInterface\getMethod
getMethod()
Psr\Http\Message\ResponseInterface
Definition: vendor/psr/http-message/src/ResponseInterface.php:20
Http\Message\Formatter
Definition: Formatter.php:13
Http\Message\Formatter\FullHttpMessageFormatter\formatRequest
formatRequest(RequestInterface $request)
Definition: FullHttpMessageFormatter.php:38
Psr\Http\Message\MessageInterface\getProtocolVersion
getProtocolVersion()
Psr\Http\Message\MessageInterface\getHeaders
getHeaders()