77use SplFileObject ;
88use SplTempFileObject ;
99use Stringable ;
10+ use Uri \Rfc3986 \Uri ;
11+ use Uri \WhatWg \Url ;
1012
1113use function array_key_exists ;
1214use function array_pop ;
@@ -158,7 +160,7 @@ public static function __set_state(array $properties): self
158160 return new self ($ properties ['rules ' ]);
159161 }
160162
161- public function resolve (DomainNameProvider |Host |Stringable |string |int |null $ host ): ResolvedDomainName
163+ public function resolve (DomainNameProvider |Host |Stringable |Url | Uri | string |int |null $ host ): ResolvedDomainName
162164 {
163165 try {
164166 return $ this ->getCookieDomain ($ host );
@@ -169,7 +171,7 @@ public function resolve(DomainNameProvider|Host|Stringable|string|int|null $host
169171 }
170172 }
171173
172- public function getCookieDomain (DomainNameProvider |Host |Stringable |string |int |null $ host ): ResolvedDomainName
174+ public function getCookieDomain (DomainNameProvider |Host |Stringable |Url | Uri | string |int |null $ host ): ResolvedDomainName
173175 {
174176 $ domain = $ this ->validateDomain ($ host );
175177 [$ suffixLength , $ section ] = $ this ->resolveSuffix ($ domain ->withoutRootLabel (), self ::UNKNOWN_DOMAINS );
@@ -181,7 +183,7 @@ public function getCookieDomain(DomainNameProvider|Host|Stringable|string|int|nu
181183 };
182184 }
183185
184- public function getICANNDomain (DomainNameProvider |Host |Stringable |string |int |null $ host ): ResolvedDomainName
186+ public function getICANNDomain (DomainNameProvider |Host |Stringable |Url | Uri | string |int |null $ host ): ResolvedDomainName
185187 {
186188 $ domain = $ this ->validateDomain ($ host );
187189 [$ suffixLength , $ section ] = $ this ->resolveSuffix ($ domain , self ::ICANN_DOMAINS );
@@ -192,7 +194,7 @@ public function getICANNDomain(DomainNameProvider|Host|Stringable|string|int|nul
192194 return ResolvedDomain::fromICANN ($ domain , $ suffixLength );
193195 }
194196
195- public function getPrivateDomain (DomainNameProvider |Host |Stringable |string |int |null $ host ): ResolvedDomainName
197+ public function getPrivateDomain (DomainNameProvider |Host |Stringable |Url | Uri | string |int |null $ host ): ResolvedDomainName
196198 {
197199 $ domain = $ this ->validateDomain ($ host );
198200 [$ suffixLength , $ section ] = $ this ->resolveSuffix ($ domain , self ::PRIVATE_DOMAINS );
@@ -209,17 +211,15 @@ public function getPrivateDomain(DomainNameProvider|Host|Stringable|string|int|n
209211 * @throws SyntaxError If the domain is invalid
210212 * @throws UnableToResolveDomain If the domain can not be resolved
211213 */
212- private function validateDomain (DomainNameProvider |Host |Stringable |string |int |null $ domain ): DomainName
214+ private function validateDomain (DomainNameProvider |Host |Stringable |Uri | Url | string |int |null $ domain ): DomainName
213215 {
214- if ($ domain instanceof DomainNameProvider) {
215- $ domain = $ domain ->domain ();
216- }
217-
218- if (!$ domain instanceof DomainName) {
219- $ domain = Domain::fromIDNA2008 ($ domain );
220- }
221-
222- return $ domain ;
216+ return match (true ) {
217+ $ domain instanceof DomainNameProvider => $ domain ->domain (),
218+ $ domain instanceof Uri => Domain::fromIDNA2008 ($ domain ->getRawHost ()),
219+ $ domain instanceof Url => Domain::fromIDNA2008 ($ domain ->getAsciiHost ()),
220+ $ domain instanceof DomainName => $ domain ,
221+ default => Domain::fromIDNA2008 ($ domain ),
222+ };
223223 }
224224
225225 /**
0 commit comments