. */ namespace SP\Domain\ItemPreset\Models; use SP\Domain\Core\Exceptions\InvalidArgumentException; use SP\Domain\Http\Adapters\Address; /** * Class SessionTimeout * * TODO: serde using JSON */ readonly class SessionTimeout { private string $address; private string $mask; /** * SessionTimeout constructor. * * @param string $address IP address and/or mask * @param int $timeout Timeout in seconds * * @throws InvalidArgumentException */ public function __construct(string $address, private int $timeout) { $parse = Address::parse4($address); $this->address = $parse['address']; $this->mask = $this->parseMask($parse); } private function parseMask(array $parse): string { if (isset($parse['cidr'])) { return Address::cidrToDec($parse['cidr']); } elseif (isset($parse['mask'])) { return $parse['mask']; } else { return '255.255.255.255'; } } public function getAddress(): string { return $this->address; } public function getMask(): string { return $this->mask; } public function getTimeout(): int { return $this->timeout; } }