X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fzendframework%2Fzend-diactoros%2Fsrc%2FResponse%2FSapiEmitterTrait.php;fp=vendor%2Fzendframework%2Fzend-diactoros%2Fsrc%2FResponse%2FSapiEmitterTrait.php;h=bbfecfce2454f670fa2ad838570ddb49110b4473;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/zendframework/zend-diactoros/src/Response/SapiEmitterTrait.php b/vendor/zendframework/zend-diactoros/src/Response/SapiEmitterTrait.php new file mode 100644 index 000000000..bbfecfce2 --- /dev/null +++ b/vendor/zendframework/zend-diactoros/src/Response/SapiEmitterTrait.php @@ -0,0 +1,109 @@ +hasHeader('Content-Length')) { + // PSR-7 indicates int OR null for the stream size; for null values, + // we will not auto-inject the Content-Length. + if (null !== $response->getBody()->getSize()) { + return $response->withHeader('Content-Length', (string) $response->getBody()->getSize()); + } + } + + return $response; + } + + /** + * Emit the status line. + * + * Emits the status line using the protocol version and status code from + * the response; if a reason phrase is available, it, too, is emitted. + * + * @param ResponseInterface $response + */ + private function emitStatusLine(ResponseInterface $response) + { + $reasonPhrase = $response->getReasonPhrase(); + header(sprintf( + 'HTTP/%s %d%s', + $response->getProtocolVersion(), + $response->getStatusCode(), + ($reasonPhrase ? ' ' . $reasonPhrase : '') + )); + } + + /** + * Emit response headers. + * + * Loops through each header, emitting each; if the header value + * is an array with multiple values, ensures that each is sent + * in such a way as to create aggregate headers (instead of replace + * the previous). + * + * @param ResponseInterface $response + */ + private function emitHeaders(ResponseInterface $response) + { + foreach ($response->getHeaders() as $header => $values) { + $name = $this->filterHeader($header); + $first = true; + foreach ($values as $value) { + header(sprintf( + '%s: %s', + $name, + $value + ), $first); + $first = false; + } + } + } + + /** + * Loops through the output buffer, flushing each, before emitting + * the response. + * + * @param int|null $maxBufferLevel Flush up to this buffer level. + */ + private function flush($maxBufferLevel = null) + { + if (null === $maxBufferLevel) { + $maxBufferLevel = ob_get_level(); + } + + while (ob_get_level() > $maxBufferLevel) { + ob_end_flush(); + } + } + + /** + * Filter a header name to wordcase + * + * @param string $header + * @return string + */ + private function filterHeader($header) + { + $filtered = str_replace('-', ' ', $header); + $filtered = ucwords($filtered); + return str_replace(' ', '-', $filtered); + } +}