src/PeekAndPoke/Aviator/FlightRecorder/Middleware/FlightRecorderMiddleware.php
public function handle(ServerRequestInterface $request, ServerFrame $frame) : ResponseInterface
    {
        if ($this->flightRecorder) {
            $this->flightRecorder->getStopWatch()->start('server');
        }

        $response = $frame->next($request);

        // TODO: have a decorator service for the HtmlConverter that injects the debug bar
        if ($this->flightRecorder &&
            $this->flightRecorder->isRecordCurrentRequest() &&
            isset($response->getHeaders()['Content-Type'][0]) &&
            $response->getHeaders()['Content-Type'][0] === 'text/html'
        ) {

            $report = $this->flightRecorder->stop($response);

            $rendered = str_replace(
                '</body>',
                $this->flightRecorder->renderDebugBar($report) . '</body>',
                (string) $response->getBody()
            );

            // TODO: avoid using "stream_for" as it is Guzzle specific. Have a $frame->responseFactory()->stream(...)
            return $response->withBody(stream_for($rendered));
        }

        return $response;
    }
public function handle(ServerRequestInterface $request, ServerFrame $frame) : ResponseInterface
    {
        if ($this->flightRecorder) {
            $this->flightRecorder->getStopWatch()->start('server');
        }

        $response = $frame->next($request);

        // TODO: have a decorator service for the HtmlConverter that injects the debug bar
        if ($this->flightRecorder &&
            $this->flightRecorder->isRecordCurrentRequest() &&
            isset($response->getHeaders()['Content-Type'][0]) &&
            $response->getHeaders()['Content-Type'][0] === 'text/html'
        ) {

            $report = $this->flightRecorder->stop($response);

            $rendered = str_replace(
                '</body>',
                $this->flightRecorder->renderDebugBar($report) . '</body>',
                (string) $response->getBody()
            );

            // TODO: avoid using "stream_for" as it is Guzzle specific. Have a $frame->responseFactory()->stream(...)
            return $response->withBody(stream_for($rendered));
        }

        return $response;
    }
public function handle ( ServerRequestInterface $ request , ServerFrame $ frame ) : ResponseInterface { if ( $ this -> flightRecorder ) { $ this -> flightRecorder -> getStopWatch ( ) -> start ( 'server' ) ; } $ response = $ frame -> next ( $ request ) ; // TODO: have a decorator service for the HtmlConverter that injects the debug bar if ( $ this -> flightRecorder && $ this -> flightRecorder -> isRecordCurrentRequest ( ) && isset ( $ response -> getHeaders ( ) [ 'Content-Type' ] [ 0 ] ) && $ response -> getHeaders ( ) [ 'Content-Type' ] [ 0 ] === 'text/html' ) { $ report = $ this -> flightRecorder -> stop ( $ response ) ; $ rendered = str_replace ( '</body>' , $ this -> flightRecorder -> renderDebugBar ( $ report ) . '</body>' , ( string ) $ response -> getBody ( ) ) ; // TODO: avoid using "stream_for" as it is Guzzle specific. Have a $frame->responseFactory()->stream(...) return $ response -> withBody ( stream_for ( $ rendered ) ) ; } return $ response ; }
@param ServerRequestInterface $request
@param ServerFrame            $frame

@return ResponseInterface
@param ServerRequestInterface $request @param ServerFrame $frame