Passed
Push — master ( 59a5a5...30f57b )
by huang
02:58
created

HTTPServer::onWorkerStart()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
eloc 5
nc 3
nop 2
dl 0
loc 10
ccs 0
cts 8
cp 0
crap 12
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * @author    jan huang <[email protected]>
4
 * @copyright 2016
5
 *
6
 * @see      https://www.github.com/janhuang
7
 * @see      http://www.fast-d.cn/
8
 */
9
10
namespace FastD\Servitization\Server;
11
12
use Exception;
13
use FastD\Http\Response;
14
use FastD\Http\SwooleServerRequest;
15
use FastD\Servitization\OnWorkerStart;
16
use FastD\Swoole\Server\HTTP;
17
use Psr\Http\Message\ServerRequestInterface;
18
use swoole_http_request;
19
use swoole_http_response;
20
21
/**
22
 * Class HTTPServer.
23
 */
24
class HTTPServer extends HTTP
25
{
26
    use OnWorkerStart;
27
28
    /**
29
     * @param swoole_http_request  $swooleRequet
30
     * @param swoole_http_response $swooleResponse
31
     */
32
    public function onRequest(swoole_http_request $swooleRequet, swoole_http_response $swooleResponse)
33
    {
34
        $request = SwooleServerRequest::createServerRequestFromSwoole($swooleRequet);
35
36
        try {
37
            $response = $this->doRequest($request);
38
            foreach ($response->getHeaders() as $key => $header) {
39
                $swooleResponse->header($key, $response->getHeaderLine($key));
40
            }
41
            foreach ($response->getCookieParams() as $key => $cookieParam) {
42
                $swooleResponse->cookie($key, $cookieParam);
43
            }
44
        } catch (Exception $e) {
45
            $response = app()->handleException($e);
46
        }
47
48
        $swooleResponse->status($response->getStatusCode());
49
        $swooleResponse->end((string) $response->getBody());
50
    }
51
52
    /**
53
     * @param ServerRequestInterface $serverRequest
54
     *
55
     * @return Response
56
     */
57
    public function doRequest(ServerRequestInterface $serverRequest)
58
    {
59
        return app()->handleRequest($serverRequest);
60
    }
61
}
62