Psr7Middlewares\Middleware\BlockSpam::__invoke PHP Method

__invoke() public method

Execute the middleware.
public __invoke ( Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next ) : Psr\Http\Message\ResponseInterface
$request Psr\Http\Message\ServerRequestInterface
$response Psr\Http\Message\ResponseInterface
$next callable
return Psr\Http\Message\ResponseInterface
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
    {
        if ($this->list === null) {
            if (!is_file($this->spammers)) {
                throw new RuntimeException(sprintf('The spammers file "%s" doest not exists', $this->spammers));
            }
            $this->list = file($this->spammers, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        }
        $referer = parse_url($request->getHeaderLine('Referer'), PHP_URL_HOST);
        $referer = preg_replace('/^(www\\.)/i', '', $referer);
        if (in_array($referer, $this->list, true)) {
            return $response->withStatus(403);
        }
        return $next($request, $response);
    }