HtmlResponse   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 1
Metric Value
eloc 17
c 2
b 0
f 1
dl 0
loc 49
ccs 17
cts 17
cp 1
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A createBody() 0 19 4
1
<?php
2
3
namespace Bone\Http\Response;
4
5
use Bone\Http\Response;
6
use Bone\Server\Traits\HasAttributesTrait;
7
use InvalidArgumentException;
8
use Laminas\Diactoros\Response\InjectContentTypeTrait;
9
use Laminas\Diactoros\Stream;
10
use Psr\Http\Message\StreamInterface;
11
12
class HtmlResponse extends Response
13
{
14
    use InjectContentTypeTrait;
15
16
    /**
17
     * Create an HTML response.
18
     *
19
     * Produces an HTML response with a Content-Type of text/html and a default
20
     * status of 200.
21
     *
22
     * @param string|StreamInterface $html HTML or stream for the message body.
23
     * @param int $status Integer status code for the response; 200 by default.
24
     * @param array $headers Array of headers to use at initialization.
25
     * @throws Exception\InvalidArgumentException if $html is neither a string or stream.
26
     */
27 3
    public function __construct($html, int $status = 200, array $headers = [])
28
    {
29 3
        parent::__construct(
30 3
            $this->createBody($html),
31
            $status,
32 3
            $this->injectContentType('text/html; charset=utf-8', $headers)
33
        );
34 3
    }
35
36
    /**
37
     * Create the message body.
38
     *
39
     * @param string|StreamInterface $html
40
     * @throws Exception\InvalidArgumentException if $html is neither a string or stream.
41
     */
42 3
    private function createBody($html) : StreamInterface
43
    {
44 3
        if ($html instanceof StreamInterface) {
45 1
            return $html;
46
        }
47
48 3
        if (! is_string($html)) {
0 ignored issues
show
introduced by
The condition is_string($html) is always true.
Loading history...
49 1
            throw new InvalidArgumentException(sprintf(
50 1
                'Invalid content (%s) provided to %s',
51 1
                (is_object($html) ? get_class($html) : gettype($html)),
52 1
                __CLASS__
53
            ));
54
        }
55
56 2
        $body = new Stream('php://temp', 'wb+');
57 2
        $body->write($html);
58 2
        $body->rewind();
59
60 2
        return $body;
61
    }
62
}