@@ -12,7 +12,7 @@ Mock for PSR-18 HTTP client
12
12
Add package to project
13
13
14
14
``` bash
15
- composer require --dev webclient/fake-http-client:^2 .0
15
+ composer require --dev webclient/fake-http-client:^3 .0
16
16
```
17
17
18
18
Set autoload
@@ -40,16 +40,56 @@ $client = new FakeHttpClient($handler);
40
40
41
41
$response = $client->sendRequest($request);
42
42
```
43
+ # Handlers
43
44
44
- # Routing
45
+ ## SpecHandler
46
+
47
+ This package provides universal handler ` \Webclient\Fake\Handler\SpecHandler\SpecHandler `
48
+ and builder ` \Webclient\Fake\Handler\SpecHandler\SpecHandlerBuilder ` .
49
+ With it, you can customize the client for almost any need.
50
+
51
+ ``` php
52
+ <?php
53
+
54
+ use Psr\Http\Message\ResponseInterface;
55
+ use Webclient\Fake\FakeHttpClient;
56
+ use Webclient\Fake\Handler\SpecHandler\SpecHandlerBuilder;
57
+ use Webclient\Fake\Handler\SpecHandler\Rule;
58
+
59
+ $builder = SpecHandlerBuilder::create();
60
+
61
+ $builder
62
+ ->route(function (Rule $rule) {
63
+ $rule->notEqual('header.authorization', 'bearer xxx');
64
+ $rule->oneOf(function (Rule $rule) {
65
+ $rule->allOf(function (Rule $rule) {
66
+ $rule->equal('uri.path', '/api/v1/posts');
67
+ $rule->equal('method', 'POST');
68
+ });
69
+ $rule->allOf(function (Rule $rule) {
70
+ $rule->match('uri.path', '^/api/v1/posts/([a-zA-Z0-9\-]+)$');
71
+ $rule->match('method', '^(PUT|DELETE)$');
72
+ });
73
+ });
74
+ })
75
+ ->response(function (ResponseInterface $response): ResponseInterface {
76
+ return $response->withStatus(403);
77
+ });
78
+
79
+ $handler = $builder->build();
80
+
81
+ $client = new FakeHttpClient($handler);
82
+ ```
83
+
84
+ ## SimpleRoutingHandler
45
85
46
86
This package provides simple routing.
47
87
48
88
``` php
49
89
<?php
50
90
51
91
use Webclient\Fake\FakeHttpClient;
52
- use Webclient\Fake\Handler\SimpleRoutingHandler;
92
+ use Webclient\Fake\Handler\SimpleRoutingHandler\SimpleRoutingHandler ;
53
93
use Psr\Http\Message\RequestInterface;
54
94
use Psr\Http\Server\RequestHandlerInterface;
55
95
0 commit comments