diff --git a/src/Domains/Validator/PublicDomain.php b/src/Domains/Validator/PublicDomain.php index fe7c831..3bd96d3 100644 --- a/src/Domains/Validator/PublicDomain.php +++ b/src/Domains/Validator/PublicDomain.php @@ -34,6 +34,11 @@ public function getDescription(): string */ public function isValid($value): bool { + // Extract domain from URL if provided + if (filter_var($value, FILTER_VALIDATE_URL)) { + $value = parse_url($value, PHP_URL_HOST); + } + $domain = new Domain($value); if (!$domain->isKnown()) { return false; diff --git a/tests/Validator/PublicDomainTest.php b/tests/Validator/PublicDomainTest.php index c24c615..9088c6c 100644 --- a/tests/Validator/PublicDomainTest.php +++ b/tests/Validator/PublicDomainTest.php @@ -27,7 +27,11 @@ public function testIsValid(): void $this->assertEquals(true, $this->domain->isValid('appwrite.io')); $this->assertEquals(true, $this->domain->isValid('usa.gov')); $this->assertEquals(true, $this->domain->isValid('stanford.edu')); + $this->assertEquals(true, $this->domain->isValid('http://google.com')); + $this->assertEquals(true, $this->domain->isValid('http://www.google.com')); + $this->assertEquals(true, $this->domain->isValid('https://example.com')); $this->assertEquals(false, $this->domain->isValid('localhost')); + $this->assertEquals(false, $this->domain->isValid('http://localhost')); $this->assertEquals(false, $this->domain->isValid('sub.demo.localhost')); $this->assertEquals(false, $this->domain->isValid('test.app.internal')); $this->assertEquals(false, $this->domain->isValid('home.local'));