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

HTTPServer   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 1 Features 0
Metric Value
dl 0
loc 38
ccs 0
cts 16
cp 0
rs 10
c 1
b 1
f 0
wmc 5
lcom 0
cbo 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A onRequest() 0 19 4
A doRequest() 0 4 1
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