Completed
Pull Request — master (#28)
by
unknown
12:17
created

ReactFactory::buildDnsConnector()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
ccs 6
cts 6
cp 1
rs 9.4285
cc 2
eloc 6
nc 2
nop 2
crap 2
1
<?php
2
3
namespace Http\Adapter\React;
4
5
use React\EventLoop\LoopInterface;
6
use React\EventLoop\Factory as EventLoopFactory;
7
use React\Dns\Resolver\Resolver as DnsResolver;
8
use React\Dns\Resolver\Factory as DnsResolverFactory;
9
use React\HttpClient\Client as HttpClient;
10
use React\Socket\Connector;
11
use React\Socket\DnsConnector;
12
13
/**
14
 * Factory wrapper for React instances.
15
 *
16
 * @author Stéphane Hulard <[email protected]>
17
 */
18
class ReactFactory
19
{
20
    /**
21
     * Build a react Event Loop.
22
     *
23
     * @return LoopInterface
24
     */
25 109
    public static function buildEventLoop()
26
    {
27 109
        return EventLoopFactory::create();
28
    }
29
30
    /**
31
     * Build a React Dns Resolver.
32
     *
33
     * @param LoopInterface $loop
34
     * @param string        $dns
35
     *
36
     * @return DnsResolver
37
     */
38 108
    public static function buildDnsResolver(
39
        LoopInterface $loop,
40
        $dns = '8.8.8.8'
41
    ) {
42 108
        $factory = new DnsResolverFactory();
43
44 108
        return $factory->createCached($dns, $loop);
45
    }
46
47
    /**
48
     * Build a React Http Client.
49
     *
50
     * @param LoopInterface $loop
51
     * @param DnsResolver   $dns
52
     *
53
     * @return HttpClient
54
     */
55 108
    public static function buildHttpClient(
56
        LoopInterface $loop,
57
        DnsResolver $dns = null
58
    ) {
59 108
        $dnsConnector = static::buildDnsConnector($loop, $dns);
60
61 108
        return new HttpClient($loop, $dnsConnector);
62
    }
63
64
    /**
65
     * @param LoopInterface    $loop
66
     * @param DnsResolver|null $dns
67
     *
68
     * @return DnsConnector
69
     */
70 108
    public static function buildDnsConnector(
71
        LoopInterface $loop,
72
        DnsResolver $dns = null
73 1
    ) {
74 108
        if (null === $dns) {
75 108
            $dns = self::buildDnsResolver($loop);
76 108
        }
77
78 108
        return new DnsConnector(new Connector($loop), $dns);
79
    }
80
}
81