for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* @codingStandardsIgnoreStart
*
* @author Barney Hanlon <[email protected]>
* @copyright Barney Hanlon 2017
* @license https://opensource.org/licenses/MIT
* @codingStandardsIgnoreEnd
*/
namespace Shrikeh\GuzzleMiddleware\TimerLogger\Handler;
use Exception;
use GuzzleHttp\Promise\PromiseInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Shrikeh\GuzzleMiddleware\TimerLogger\Handler\Traits\HandlerStaticConstructorTrait;
* Class StartHandler.
class StopTimer
{
use HandlerStaticConstructorTrait;
* @param RequestInterface $request The Request to stop timing
* @param array $options An ignorable list of options
* @param PromiseInterface $promise A Promise to fulfill
public function __invoke(
RequestInterface $request,
array $options,
PromiseInterface $promise
) {
$closure = $this->closure($request);
$promise->then(
$closure,
$closure
);
}
* @param RequestInterface $request The Request being timed
* @return callable|\Closure
private function closure(RequestInterface $request)
$exceptionHandler = $this->exceptionHandler;
return function (ResponseInterface $response) use ($request, $exceptionHandler) {
return function(...) { /* ... */ }
callable
Closure|callable
try {
$this->responseTimeLogger->stop($request, $response);
} catch (Exception $e) {
$exceptionHandler->handle($e);
};