mirror of
https://github.com/shlinkio/shlink.git
synced 2025-02-25 18:45:27 -06:00
Update RequestTracker so that its methods return the new Visit instance, if any
This commit is contained in:
@@ -12,6 +12,7 @@ use Shlinkio\Shlink\Core\ErrorHandler\Model\NotFoundType;
|
||||
use Shlinkio\Shlink\Core\Exception\InvalidIpFormatException;
|
||||
use Shlinkio\Shlink\Core\ShortUrl\Entity\ShortUrl;
|
||||
use Shlinkio\Shlink\Core\Util\IpAddressUtils;
|
||||
use Shlinkio\Shlink\Core\Visit\Entity\Visit;
|
||||
use Shlinkio\Shlink\Core\Visit\Model\Visitor;
|
||||
|
||||
use function Shlinkio\Shlink\Core\ipAddressFromRequest;
|
||||
@@ -22,24 +23,26 @@ readonly class RequestTracker implements RequestTrackerInterface, RequestMethodI
|
||||
{
|
||||
}
|
||||
|
||||
public function trackIfApplicable(ShortUrl $shortUrl, ServerRequestInterface $request): void
|
||||
{
|
||||
if ($this->shouldTrackRequest($request)) {
|
||||
$this->visitsTracker->track($shortUrl, Visitor::fromRequest($request));
|
||||
}
|
||||
}
|
||||
|
||||
public function trackNotFoundIfApplicable(ServerRequestInterface $request): void
|
||||
public function trackIfApplicable(ShortUrl $shortUrl, ServerRequestInterface $request): Visit|null
|
||||
{
|
||||
if (! $this->shouldTrackRequest($request)) {
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this->visitsTracker->track($shortUrl, Visitor::fromRequest($request));
|
||||
}
|
||||
|
||||
public function trackNotFoundIfApplicable(ServerRequestInterface $request): Visit|null
|
||||
{
|
||||
if (! $this->shouldTrackRequest($request)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @var NotFoundType|null $notFoundType */
|
||||
$notFoundType = $request->getAttribute(NotFoundType::class);
|
||||
$visitor = Visitor::fromRequest($request);
|
||||
|
||||
match (true) {
|
||||
return match (true) {
|
||||
$notFoundType?->isBaseUrl() => $this->visitsTracker->trackBaseUrlVisit($visitor),
|
||||
$notFoundType?->isRegularNotFound() => $this->visitsTracker->trackRegularNotFoundVisit($visitor),
|
||||
$notFoundType?->isInvalidShortUrl() => $this->visitsTracker->trackInvalidShortUrlVisit($visitor),
|
||||
|
||||
@@ -6,10 +6,11 @@ namespace Shlinkio\Shlink\Core\Visit;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Shlinkio\Shlink\Core\ShortUrl\Entity\ShortUrl;
|
||||
use Shlinkio\Shlink\Core\Visit\Entity\Visit;
|
||||
|
||||
interface RequestTrackerInterface
|
||||
{
|
||||
public function trackIfApplicable(ShortUrl $shortUrl, ServerRequestInterface $request): void;
|
||||
public function trackIfApplicable(ShortUrl $shortUrl, ServerRequestInterface $request): Visit|null;
|
||||
|
||||
public function trackNotFoundIfApplicable(ServerRequestInterface $request): void;
|
||||
public function trackNotFoundIfApplicable(ServerRequestInterface $request): Visit|null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user