php-http / message

HTTP Message related tools
http://php-http.org
MIT License
1.3k stars 42 forks source link

Additional implementations of RequestMatcher #117

Open localheinz opened 5 years ago

localheinz commented 5 years ago
Q A
Bug? no yes
New Feature? yes
Version n/a

Question

In a project we are currently using implementations of the RequestMatcher which allow us to reuse and compose request matchers.

For example

$httpClient->on(
    AllOf::matchers(
        Method::is('GET'),
        Path::is('foo/bar'),
        Uri\QueryParameters::are([
            'baz' => '1',
            'qux' => 'hmm',
        ])
    ),
    new Psr7\Response(Http::OK)
);

Would there be interest in having these pushed upstream, that is, into this repository?

dbu commented 5 years ago

i think generally we are open to contributions.

while this is quite expressive to read, i think this creates a lot of classes and method calls. how about a RequestMatcherFactory with fluent interface?

$rmf
    ->method('GET')
    ->path('foo/bar')
    ->queryParameters(['baz' => '1'])
    ->getMatcher()
;

i see that your approach could also do AnyOf or something like that, but i doubt that comes up much - and there is still the CallbackRequestMatcher for such situations.