Skip to content

Commit 04d62e9

Browse files
committed
Add in usage examples
* Simple HTTPS client * Lookup client IP via DoH
1 parent 5682685 commit 04d62e9

File tree

3 files changed

+58
-1
lines changed

3 files changed

+58
-1
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# DNS over HTTPS client for ReactPHP
22

3-
Resolve DNS queries over HTTPS, provides secure DNS resolution over untrusted or shared networks (eg Serverless deployments) utilising standard HTTP queries.
3+
Resolve DNS queries over HTTPS, provides secure DNS resolution over untrusted or shared networks (eg Serverless deployments) utilising standard HTTPS queries.
44

55
## Requirements
66

@@ -14,6 +14,11 @@ You can add the library as project dependency using [Composer](https://getcompos
1414
composer require edgetelemetrics/reactphp-dns-over-https-client
1515
```
1616

17+
## Examples
18+
See [/examples](/examples) directory
19+
* [Use DoH with ReactHTTP Client](/examples/browser.php)
20+
* [Use DoH to find your public IP](/examples/whats-my-ip.php)
21+
1722
## License
1823

1924
MIT, see [LICENSE file](LICENSE).

examples/browser.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php declare(strict_types=1);
2+
3+
use EdgeTelemetrics\React\Dns\DohExecutor;
4+
use React\Cache\ArrayCache;
5+
use React\Dns\Query\CachingExecutor;
6+
use React\Dns\Query\TimeoutExecutor;
7+
use React\Dns\Resolver\Resolver;
8+
9+
include __DIR__ . '/../vendor/autoload.php';
10+
11+
$cache = new ArrayCache(256);
12+
13+
$executor = new TimeoutExecutor(
14+
new DohExecutor('1.1.1.1'),
15+
5.0,
16+
);
17+
$executor = new CachingExecutor($executor, $cache);
18+
19+
$resolver = new Resolver($executor);
20+
21+
$endpoint = 'https://raw.githubusercontent.com/lucasnetau/reactphp-dns-over-https-client/main/README.md';
22+
23+
$client = (new React\Http\Browser(new React\Socket\Connector([
24+
'tcp' => ['tcp_nodelay' => true,],
25+
'dns' => $resolver,
26+
'timeout' => 5.0,
27+
])))->withTimeout(10.0);
28+
29+
$client->get($endpoint)->then(function (Psr\Http\Message\ResponseInterface $response) {
30+
$body = (string)$response->getBody();
31+
echo $body;
32+
}, 'printf');

examples/whats-my-ip.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php declare(strict_types=1);
2+
3+
use EdgeTelemetrics\React\Dns\DohExecutor;
4+
use React\Dns\Query\TimeoutExecutor;
5+
use React\Dns\Resolver\Resolver;
6+
7+
include __DIR__ . '/../vendor/autoload.php';
8+
9+
$executor = new TimeoutExecutor(
10+
new DohExecutor('doh.opendns.com'),
11+
5.0,
12+
);
13+
14+
$resolver = new Resolver($executor);
15+
16+
$resolver->resolve('myip.opendns.com')->then(function($ip) {
17+
echo 'Your IP is ' . $ip . PHP_EOL;
18+
}, 'printf');
19+
20+

0 commit comments

Comments
 (0)