This library is just composed of interfaces to implement, to check wether or not a request and/or a response match some arbitrary conditions.
These interfaces provide no return type-hint and is therefore compatible from PHP 5.3+.
namespace App;
use BenTools\Psr7\RequestMatcherInterface;
use Psr\Http\Message\RequestInterface;
class ExampleOrgRequestMatcher implements RequestMatcherInterface
{
/**
* @inheritdoc
*/
public function matchRequest(RequestInterface $request)
{
return 'www.example.org' === $request->getUri()->getHost();
}
}
namespace App;
use BenTools\Psr7\ResponseMatcherInterface;
use Psr\Http\Message\ResponseInterface;
class TeapotResponseMatcher implements ResponseMatcherInterface
{
/**
* @inheritdoc
*/
public function matchResponse(ResponseInterface $response)
{
return 418 === $response->getStatusCode();
}
}
namespace App;
use BenTools\Psr7\TransferMatcherInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
class DummyTransferMatcher implements TransferMatcherInterface
{
/**
* @inheritdoc
*/
public function matchTransfer(RequestInterface $request, ResponseInterface $response)
{
return $request->hasHeader('Authorization')
&& 'Welcome, human.' === (string) $response->getBody();
}
}
composer require bentools/psr7-request-matcher
./vendor/bin/phpunit