Add logic to send visits to a matomo instance

This commit is contained in:
Alejandro Celaya
2023-11-15 19:57:58 +01:00
parent 0edb3e5c2c
commit 9dbd15bc0c
13 changed files with 341 additions and 147 deletions

View File

@@ -9,17 +9,19 @@ use Shlinkio\Shlink\EventDispatcher\Util\JsonUnserializable;
abstract class AbstractVisitEvent implements JsonSerializable, JsonUnserializable
{
final public function __construct(public readonly string $visitId)
{
final public function __construct(
public readonly string $visitId,
public readonly ?string $originalIpAddress = null,
) {
}
public function jsonSerialize(): array
{
return ['visitId' => $this->visitId];
return ['visitId' => $this->visitId, 'originalIpAddress' => $this->originalIpAddress];
}
public static function fromPayload(array $payload): self
{
return new static($payload['visitId'] ?? '');
return new static($payload['visitId'] ?? '', $payload['originalIpAddress'] ?? null);
}
}

View File

@@ -6,18 +6,4 @@ namespace Shlinkio\Shlink\Core\EventDispatcher\Event;
final class UrlVisited extends AbstractVisitEvent
{
private ?string $originalIpAddress = null;
public static function withOriginalIpAddress(string $visitId, ?string $originalIpAddress): self
{
$instance = new self($visitId);
$instance->originalIpAddress = $originalIpAddress;
return $instance;
}
public function originalIpAddress(): ?string
{
return $this->originalIpAddress;
}
}