Skip to content

Commit 87e7633

Browse files
authored
Merge pull request #208 from clue-labs/resolverinterface
Accept DNS `ResolverInterface` and fix failing test suite
2 parents 10f0629 + 326e228 commit 87e7633

File tree

6 files changed

+17
-21
lines changed

6 files changed

+17
-21
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -958,8 +958,8 @@ $connector->connect('127.0.0.1:80')->then(function (React\Socket\ConnectionInter
958958
});
959959
```
960960

961-
Advanced: If you need a custom DNS `Resolver` instance, you can also set up
962-
your `Connector` like this:
961+
Advanced: If you need a custom DNS `React\Dns\Resolver\ResolverInterface` instance, you
962+
can also set up your `Connector` like this:
963963

964964
```php
965965
$dnsResolverFactory = new React\Dns\Resolver\Factory();
@@ -1193,8 +1193,8 @@ $promise->cancel();
11931193
Calling `cancel()` on a pending promise will cancel the underlying DNS lookup
11941194
and/or the underlying TCP/IP connection and reject the resulting promise.
11951195

1196-
> Advanced usage: Internally, the `DnsConnector` relies on a `Resolver` to
1197-
look up the IP address for the given hostname.
1196+
> Advanced usage: Internally, the `DnsConnector` relies on a `React\Dns\Resolver\ResolverInterface`
1197+
to look up the IP address for the given hostname.
11981198
It will then replace the hostname in the destination URI with this IP and
11991199
append a `hostname` query parameter and pass this updated URI to the underlying
12001200
connector.

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"require": {
77
"php": ">=5.3.0",
88
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
9-
"react/dns": "^1.0 || ^0.4.13",
9+
"react/dns": "^1.1",
1010
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
1111
"react/promise": "^2.6.0 || ^1.2.1",
1212
"react/promise-timer": "^1.4.0",

src/Connector.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22

33
namespace React\Socket;
44

5-
use React\Dns\Config\Config;
6-
use React\Dns\Resolver\Factory;
7-
use React\Dns\Resolver\Resolver;
5+
use React\Dns\Config\Config as DnsConfig;
6+
use React\Dns\Resolver\Factory as DnsFactory;
7+
use React\Dns\Resolver\ResolverInterface;
88
use React\EventLoop\LoopInterface;
9-
use React\Promise;
10-
use RuntimeException;
119

1210
/**
1311
* The `Connector` class is the main class in this package that implements the
@@ -54,18 +52,18 @@ public function __construct(LoopInterface $loop, array $options = array())
5452
}
5553

5654
if ($options['dns'] !== false) {
57-
if ($options['dns'] instanceof Resolver) {
55+
if ($options['dns'] instanceof ResolverInterface) {
5856
$resolver = $options['dns'];
5957
} else {
6058
if ($options['dns'] !== true) {
6159
$server = $options['dns'];
6260
} else {
6361
// try to load nameservers from system config or default to Google's public DNS
64-
$config = Config::loadSystemConfigBlocking();
62+
$config = DnsConfig::loadSystemConfigBlocking();
6563
$server = $config->nameservers ? \reset($config->nameservers) : '8.8.8.8';
6664
}
6765

68-
$factory = new Factory();
66+
$factory = new DnsFactory();
6967
$resolver = $factory->create(
7068
$server,
7169
$loop
@@ -125,7 +123,7 @@ public function connect($uri)
125123
}
126124

127125
if (!isset($this->connectors[$scheme])) {
128-
return Promise\reject(new \RuntimeException(
126+
return \React\Promise\reject(new \RuntimeException(
129127
'No connector available for URI scheme "' . $scheme . '"'
130128
));
131129
}

src/DnsConnector.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@
22

33
namespace React\Socket;
44

5-
use React\Dns\Resolver\Resolver;
5+
use React\Dns\Resolver\ResolverInterface;
66
use React\Promise;
77
use React\Promise\CancellablePromiseInterface;
8-
use InvalidArgumentException;
9-
use RuntimeException;
108

119
final class DnsConnector implements ConnectorInterface
1210
{
1311
private $connector;
1412
private $resolver;
1513

16-
public function __construct(ConnectorInterface $connector, Resolver $resolver)
14+
public function __construct(ConnectorInterface $connector, ResolverInterface $resolver)
1715
{
1816
$this->connector = $connector;
1917
$this->resolver = $resolver;

tests/ConnectorTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public function testConnectorUsesGivenResolverInstance()
9696
$loop = $this->getMockBuilder('React\EventLoop\LoopInterface')->getMock();
9797

9898
$promise = new Promise(function () { });
99-
$resolver = $this->getMockBuilder('React\Dns\Resolver\Resolver')->disableOriginalConstructor()->getMock();
99+
$resolver = $this->getMockBuilder('React\Dns\Resolver\ResolverInterface')->getMock();
100100
$resolver->expects($this->once())->method('resolve')->with('google.com')->willReturn($promise);
101101

102102
$connector = new Connector($loop, array(
@@ -111,7 +111,7 @@ public function testConnectorUsesResolvedHostnameIfDnsIsUsed()
111111
$loop = $this->getMockBuilder('React\EventLoop\LoopInterface')->getMock();
112112

113113
$promise = new Promise(function ($resolve) { $resolve('127.0.0.1'); });
114-
$resolver = $this->getMockBuilder('React\Dns\Resolver\Resolver')->disableOriginalConstructor()->getMock();
114+
$resolver = $this->getMockBuilder('React\Dns\Resolver\ResolverInterface')->getMock();
115115
$resolver->expects($this->once())->method('resolve')->with('google.com')->willReturn($promise);
116116

117117
$promise = new Promise(function () { });

tests/DnsConnectorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class DnsConnectorTest extends TestCase
1515
public function setUp()
1616
{
1717
$this->tcp = $this->getMockBuilder('React\Socket\ConnectorInterface')->getMock();
18-
$this->resolver = $this->getMockBuilder('React\Dns\Resolver\Resolver')->disableOriginalConstructor()->getMock();
18+
$this->resolver = $this->getMockBuilder('React\Dns\Resolver\ResolverInterface')->getMock();
1919

2020
$this->connector = new DnsConnector($this->tcp, $this->resolver);
2121
}

0 commit comments

Comments
 (0)