Failed Conditions
Push — master ( b74acd...f46d35 )
by Maximo
04:31 queued 48s
created

library/Http/SwooleResponse.php (1 issue)

Labels
Severity
1
<?php
2
// +----------------------------------------------------------------------
3
// | SwooleResponse.php [ WE CAN DO IT JUST THINK IT ]
4
// +----------------------------------------------------------------------
5
// | Copyright (c) 2016-2017 limingxinleo All rights reserved.
6
// +----------------------------------------------------------------------
7
// | Author: limx <[email protected]> <https://github.com/limingxinleo>
8
// +----------------------------------------------------------------------
9
10
namespace Gewaer\Http;
11
12
use Phalcon\Http\Cookie;
13
use Phalcon\Http\Response as PhResponse;
14
use swoole_http_response;
0 ignored issues
show
The type swoole_http_response was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
use Exception;
16
17
class SwooleResponse extends Response
18
{
19
    protected $response;
20
21
    /**
22
     * Set the swoole response object
23
     *
24
     * @param swoole_http_response $response
25
     * @return void
26
     */
27
    public function init(swoole_http_response $response)
28
    {
29
        $this->response = $response;
30
        $this->_sent = false;
31
        $this->_content = null;
32
        $this->setStatusCode(200);
33
    }
34
35
    /**
36
     * Send the response
37
     *
38
     * @return PhResponse
39
     */
40
    public function send(): PhResponse
41
    {
42
        if ($this->_sent) {
43
            throw new Exception('Response was already sent');
44
        }
45
46
        $this->_sent = true;
47
        // get phalcon headers
48
        $headers = $this->getHeaders();
49
50
        foreach ($headers->toArray() as $key => $val) {
51
            //if the key has spaces this breaks postman, so we remove this headers
52
            //example: HTTP/1.1 200 OK || HTTP/1.1 401 Unauthorized
53
            if (!preg_match('/\s/', $key)) {
54
                $this->response->header($key, $val);
55
            }
56
        }
57
58
        /** @var Cookies $cookies */
59
        $cookies = $this->getCookies();
60
        if ($cookies) {
61
            /** @var Cookie $cookie */
62
            foreach ($cookies->getCookies() as $cookie) {
63
                $this->response->cookie(
64
                    $cookie->getName(),
65
                    $cookie->getValue(),
66
                    $cookie->getExpiration(),
67
                    $cookie->getPath(),
68
                    $cookie->getDomain(),
69
                    $cookie->getSecure(),
70
                    $cookie->getHttpOnly()
71
                );
72
            }
73
        }
74
75
        //set swoole response
76
        $this->response->status($this->getStatusCode());
77
        $this->response->end($this->_content);
78
79
        //reest di
80
        $this->_sent = false;
81
        $this->getDi()->get('db')->close();
82
        $this->getDi()->reset();
83
84
        return $this;
85
    }
86
}
87