/
Alexsey-VR
/
php-project-9
Обзор
Документация
Войти
/
Alexsey-VR
/
php-project-9
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Controllers/UrlCheckAction.php
72 строки
2 KB
Alexsey-VR
updated url check action
18 май 2026, 06:34
18 май 2026, 06:34
4dbc94b
Код
Авторство
О чём код?
<?php namespace Analyzer\Controllers; use Slim\Flash\Messages; use Slim\Http\Interfaces\ResponseInterface; use Slim\Interfaces\RouteParserInterface; use Psr\Http\Message\ResponseInterface as PsrResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Analyzer\Repository\{ValidatedUrlRepository, UrlCheckRepository}; use Analyzer\Interfaces\UrlInterface; use Analyzer\UrlCheck\UrlCheck; use Analyzer\Exceptions\UrlException; class UrlCheckAction { private ValidatedUrlRepository $urlRepository; private UrlCheckRepository $urlCheckRepository; private RouteParserInterface $router; private Messages $flash; public function __construct( ValidatedUrlRepository $urlRepository, UrlCheckRepository $urlCheckRepository, Messages $flash, RouteParserInterface $router ) { $this->urlRepository = $urlRepository; $this->urlCheckRepository = $urlCheckRepository; $this->flash = $flash; $this->router = $router; } /** * @param array<string,mixed> $args */ public function __invoke( ServerRequestInterface $request, ResponseInterface $response, array $args ): PsrResponseInterface { $id = intval( is_string($args['id']) ? $args['id'] : null ); $url = $this->urlRepository->find($id); $urlCheck = UrlCheck::fromUrl( ($url instanceof UrlInterface) ? $url : throw new UrlException("Internal error: can't get a url interface on checks") ); if ($urlCheck->execute()) { $this->urlCheckRepository->save($urlCheck); $timestamp = $urlCheck->getTimestamp(); $url->setTimestamp( is_string($timestamp) ? $timestamp : throw new UrlException("Internal error: can't get a timestamp on checks") ); $this->urlRepository->save($url); $this->flash->addMessage('success', $urlCheck->getMessage()); } else { $this->flash->addMessage('error', $urlCheck->getMessage()); } $toUrlInfo = $this->router->urlFor('urlInfo', ['id' => "{$url->getId()}"]); return $response->withRedirect($toUrlInfo); } }