Skip to content

Commit d136de3

Browse files
authored
Merge pull request #277 from jeremykendall/feature/update-rules-public-api
Remove publicsuffix related methods from Rules
2 parents 9de3bcb + ff068a3 commit d136de3

File tree

4 files changed

+44
-127
lines changed

4 files changed

+44
-127
lines changed

CHANGELOG.md

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@
22

33
All Notable changes to `PHP Domain Parser` **5.x** series will be documented in this file
44

5-
## Next - TBD
5+
## 5.7.0 - TBD
66

77
### Added
88

9-
- `Rules::resolveCookieDomain`
10-
- `Rules::resolveICANNDomain`
11-
- `Rules::resolvePrivateDomain`
12-
- `Rules::getCookieEffectiveTLD`
13-
- `Rules::getICANNEffectiveTLD`
14-
- `Rules::getPrivateeEffectiveTLD`
9+
- `Rules::getCookieDomain`
10+
- `Rules::getICANNDomain`
11+
- `Rules::getPrivateDomain`
1512
- `CouldNotResolvePublicSuffix::dueToUnresolvableDomain`
1613

1714
### Fixed

README.md

Lines changed: 11 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -46,52 +46,23 @@ $ composer require jeremykendall/php-domain-parser
4646
Usage
4747
--------
4848

49-
### Public suffix resolution.
50-
51-
The first objective of the library is using the [Public Suffix List](http://publicsuffix.org/) to easily return the ICANN, the Cookie or
52-
the Private Effective TLD as a `Pdp\PublicSuffix` object using the following methods:
53-
54-
~~~php
55-
use Pdp\Rules;
56-
57-
$rules = Rules::createFromPath('/path/to/mozilla/public-suffix.dat');
58-
59-
echo $rules->getICANNEffectiveTLD('www.ulb.ac.be'); //display 'ac.be';
60-
echo $rules->getCookieEffectiveTLD('www.ulb.ac.be'); //display 'ac.be';
61-
echo $rules->getPrivateEffectiveTLD('www.ulb.ac.be'); //display 'be';
62-
~~~
49+
### Domain part resolutions
6350

64-
The methods are available since version `5.7.0` to ease the package usage. Prior to this version you could use the
65-
`Rules::getPublicSuffix` method with an optional `$section` argument to get the same results:
51+
The first objective of the library is using the [Public Suffix List](http://publicsuffix.org/) to easily resolve domain information.
6652

6753
~~~php
6854
use Pdp\Rules;
6955

7056
$rules = Rules::createFromPath('/path/to/mozilla/public-suffix.dat');
7157

72-
echo $rules->getPublicSuffix('www.ulb.ac.be'); // get the cookie effective TLD, display 'ac.be';
73-
echo $rules->getPublicSuffix('www.ulb.ac.be', Rules::ICANN_DOMAINS); //get the ICANN effective TLD, display 'ac.be';
74-
echo $rules->getPublicSuffix('www.ulb.ac.be', Rules::PRIVATE_DOMAINS); //get the Private effective TLD, display 'be';
58+
echo $rules->getCookieDomain('www.ulb.ac.be'); // returns a Pdp\Domain object whose Public Suffix is 'ac.be';
59+
echo $rules->getICANNDomain('www.ulb.ac.be'); // returns a Pdp\Domain object whose Public Suffix is 'ac.be';
60+
echo $rules->getPrivateDomain('www.ulb.ac.be'); // returns a Pdp\Domain object whose Public Suffix is 'be';
7561
~~~
7662

63+
* Warning: If the Domain is not found an exception is thrown. *
7764

78-
If the Public Suffix is not found or in case of error an exception which extends `Pdp\Exception` is thrown.
79-
80-
### Domain resolution.
81-
82-
Apart the Public Suffix the package can resolve domain and their information also using Mozilla's [Public Suffix List](http://publicsuffix.org/)
83-
84-
~~~php
85-
use Pdp\Rules;
86-
87-
$rules = Rules::createFromPath('/path/to/mozilla/public-suffix.dat');
88-
89-
echo $rules->resolveCookieDomain('www.ulb.ac.be'); // returns a Pdp\Domain object whose Public Suffix is 'ac.be';
90-
echo $rules->resolveICANNDomain('www.ulb.ac.be'); // returns a Pdp\Domain object whose Public Suffix is 'ac.be';
91-
echo $rules->resolvePrivateDomain('www.ulb.ac.be'); // returns a Pdp\Domain object whose Public Suffix is 'be';
92-
~~~
93-
94-
The methods are available since version `5.7.0` to ease the package usage. Prior to this version you could use the
65+
These methods are available since version `5.7.0` to ease the package usage. Prior to this version you could use the
9566
`Rules::resolve` method with an optional `$section` argument to get the same results:
9667

9768
~~~php
@@ -104,7 +75,7 @@ echo $rules->resolve('www.ulb.ac.be', Rules::ICANN_DOMAINS); // returns a Pdp\Do
10475
echo $rules->resolve('www.ulb.ac.be', Rules::PRIVATE_DOMAINS); // returns a Pdp\Domain object whose Public Suffix is 'be';
10576
~~~
10677

107-
If the Domain is not resolved or in case of error a null `Pdp\Domain` is returned.
78+
* Warning: If the Domain can not be resolved or in case of error a null `Pdp\Domain` is returned. *
10879

10980
### Top Level Domains resolution
11081

@@ -127,11 +98,11 @@ If the Domain is not resolved or in case of error a null `Pdp\Domain` is returne
12798
~~~php
12899
<?php
129100

130-
use Pdp\Rules;
101+
use Pdp\Rules;use Pdp\TopLevelDomains;
131102

132103
$rules = Rules::createFromPath('/path/to/mozilla/public-suffix.dat'); //$rules is a Pdp\Rules object
133104

134-
$domain = $rules->resolveICANNDomain('www.ulb.ac.be'); //$domain is a Pdp\Domain object
105+
$domain = $rules->getICANNDomain('www.ulb.ac.be'); //$domain is a Pdp\Domain object
135106
echo $domain->getContent(); // 'www.ulb.ac.be'
136107
echo $domain->getPublicSuffix(); // 'ac.be'
137108
echo $domain->getRegistrableDomain(); // 'ulb.ac.be'
@@ -142,20 +113,7 @@ $domain->isICANN(); // returns true
142113
$domain->isPrivate(); // returns false
143114
$domain->labels(); // returns ['be', 'ac', 'ulb', 'www']
144115

145-
$publicSuffix = $rules->getPrivateEffectiveTLD('mydomain.github.io'); //$publicSuffix is a Pdp\PublicSuffix object
146-
echo $publicSuffix->getContent(); // 'github.io'
147-
$publicSuffix->isKnown(); // returns true
148-
$publicSuffix->isICANN(); // returns false
149-
$publicSuffix->isPrivate(); // returns true
150-
$publicSuffix->labels(); // returns ['io', 'github']
151-
152-
$altSuffix = $rules->getICANNEffectiveTLD('mydomain.github.io');
153-
echo $altSuffix->getContent(); // 'io'
154-
$altSuffix->isKnown(); // returns true
155-
$altSuffix->isICANN(); // returns true
156-
$altSuffix->isPrivate(); // returns false
157-
158-
$tldList = $manager->getTLDs(); //$tldList is a Pdp\TopLevelDomains object
116+
$tldList = TopLevelDomains::createFromPath('/path/to/IANA/RootZoneDatabase.txt'); //$tldList is a Pdp\TopLevelDomains object
159117
$domain = $tldList->resolve('www.ulb.ac.be'); //$domain is a Pdp\Domain object
160118
$tldList->contains('be'); //returns true
161119
$tldList->contains('localhost'); //return false

src/Rules.php

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -200,42 +200,6 @@ public function getPublicSuffix($domain, string $section = self::ALL_DOMAINS): P
200200
return PublicSuffix::createFromDomain($domain->resolve($publicSuffix));
201201
}
202202

203-
/**
204-
* Determines the public suffix for a given domain against the PSL rules for cookie domain detection..
205-
*
206-
* @param mixed $domain
207-
*
208-
* @throws CouldNotResolvePublicSuffix If the PublicSuffix can not be resolve.
209-
*/
210-
public function getCookieEffectiveTLD($domain): PublicSuffix
211-
{
212-
return $this->getPublicSuffix($domain, '');
213-
}
214-
215-
/**
216-
* Determines the public suffix for a given domain against the PSL rules for ICANN domain detection..
217-
*
218-
* @param mixed $domain
219-
*
220-
* @throws CouldNotResolvePublicSuffix If the PublicSuffix can not be resolve.
221-
*/
222-
public function getICANNEffectiveTLD($domain): PublicSuffix
223-
{
224-
return $this->getPublicSuffix($domain, self::ICANN_DOMAINS);
225-
}
226-
227-
/**
228-
* Determines the public suffix for a given domain against the PSL rules for private domain detection..
229-
*
230-
* @param mixed $domain
231-
*
232-
* @throws CouldNotResolvePublicSuffix If the PublicSuffix can not be resolve.
233-
*/
234-
public function getPrivateEffectiveTLD($domain): PublicSuffix
235-
{
236-
return $this->getPublicSuffix($domain, self::PRIVATE_DOMAINS);
237-
}
238-
239203
/**
240204
* Returns PSL info for a given domain.
241205
*
@@ -249,12 +213,12 @@ public function resolve($domain, string $section = self::ALL_DOMAINS): Domain
249213
$section = $this->validateSection($section);
250214
try {
251215
if ('' === $section) {
252-
return $this->resolveCookieDomain($domain);
216+
return $this->getCookieDomain($domain);
253217
} elseif (self::ICANN_DOMAINS === $section) {
254-
return $this->resolveICANNDomain($domain);
218+
return $this->getICANNDomain($domain);
255219
}
256220

257-
return $this->resolvePrivateDomain($domain);
221+
return $this->getPrivateDomain($domain);
258222
} catch (CouldNotResolvePublicSuffix $exception) {
259223
if ($exception->hasDomain()) {
260224
/** @var Domain */
@@ -274,7 +238,7 @@ public function resolve($domain, string $section = self::ALL_DOMAINS): Domain
274238
*
275239
* @param mixed $domain the domain value
276240
*/
277-
public function resolveCookieDomain($domain): Domain
241+
public function getCookieDomain($domain): Domain
278242
{
279243
$domain = $this->validateDomain($domain);
280244

@@ -286,7 +250,7 @@ public function resolveCookieDomain($domain): Domain
286250
*
287251
* @param mixed $domain
288252
*/
289-
public function resolveICANNDomain($domain): Domain
253+
public function getICANNDomain($domain): Domain
290254
{
291255
$domain = $this->validateDomain($domain);
292256

@@ -298,7 +262,7 @@ public function resolveICANNDomain($domain): Domain
298262
*
299263
* @param mixed $domain
300264
*/
301-
public function resolvePrivateDomain($domain): Domain
265+
public function getPrivateDomain($domain): Domain
302266
{
303267
$domain = $this->validateDomain($domain);
304268

tests/RulesTest.php

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
use const IDNA_NONTRANSITIONAL_TO_UNICODE;
3333

3434
/**
35-
* @coversDefaultClass Pdp\Rules
35+
* @coversDefaultClass \Pdp\Rules
3636
*/
3737
class RulesTest extends TestCase
3838
{
@@ -114,9 +114,9 @@ public function testwithIDNAOptions(): void
114114

115115
/**
116116
* @covers ::resolve
117-
* @covers ::resolveCookieDomain
118-
* @covers ::resolveICANNDomain
119-
* @covers ::resolvePrivateDomain
117+
* @covers ::getCookieDomain
118+
* @covers ::getICANNDomain
119+
* @covers ::getPrivateDomain
120120
* @covers ::validateDomain
121121
* @covers ::validateSection
122122
* @covers \Pdp\Domain::isResolvable
@@ -155,12 +155,12 @@ public function testResolveThrowsExceptionOnWrongDomainType(): void
155155
/**
156156
* @covers ::resolve
157157
* @covers ::validateSection
158-
* @covers \Pdp\Domain::isResolvable
159158
* @covers ::findPublicSuffix
160159
* @covers ::findPublicSuffixFromSection
160+
* @covers \Pdp\Domain::isKnown
161+
* @covers \Pdp\Domain::isResolvable
161162
* @covers \Pdp\PublicSuffix::setSection
162163
* @covers \Pdp\PublicSuffix::isKnown
163-
* @covers \Pdp\Domain::isKnown
164164
* @covers \Pdp\IDNAConverterTrait::parse
165165
*/
166166
public function testIsSuffixValidFalse(): void
@@ -172,13 +172,13 @@ public function testIsSuffixValidFalse(): void
172172
/**
173173
* @covers ::resolve
174174
* @covers ::validateSection
175-
* @covers \Pdp\Domain::isResolvable
176175
* @covers ::findPublicSuffix
177176
* @covers ::findPublicSuffixFromSection
178177
* @covers \Pdp\PublicSuffix::setSection
179178
* @covers \Pdp\PublicSuffix::isKnown
180179
* @covers \Pdp\PublicSuffix::isICANN
181180
* @covers \Pdp\PublicSuffix::isPrivate
181+
* @covers \Pdp\Domain::isResolvable
182182
* @covers \Pdp\Domain::withPublicSuffix
183183
* @covers \Pdp\Domain::isKnown
184184
* @covers \Pdp\Domain::isICANN
@@ -195,16 +195,16 @@ public function testIsSuffixValidTrue(): void
195195

196196
/**
197197
* @covers ::resolve
198-
* @covers ::resolveCookieDomain
198+
* @covers ::getCookieDomain
199199
* @covers ::validateDomain
200200
* @covers ::validateSection
201-
* @covers \Pdp\Domain::isResolvable
202201
* @covers ::findPublicSuffix
203202
* @covers ::findPublicSuffixFromSection
204203
* @covers \Pdp\PublicSuffix::setSection
205204
* @covers \Pdp\PublicSuffix::isKnown
206205
* @covers \Pdp\PublicSuffix::isICANN
207206
* @covers \Pdp\PublicSuffix::isPrivate
207+
* @covers \Pdp\Domain::isResolvable
208208
* @covers \Pdp\Domain::withPublicSuffix
209209
* @covers \Pdp\Domain::isKnown
210210
* @covers \Pdp\Domain::isICANN
@@ -221,16 +221,16 @@ public function testIsSuffixValidFalseWithPunycoded(): void
221221

222222
/**
223223
* @covers ::resolve
224-
* @covers ::resolveICANNDomain
224+
* @covers ::getICANNDomain
225225
* @covers ::validateDomain
226226
* @covers ::validateSection
227-
* @covers \Pdp\Domain::isResolvable
228227
* @covers ::findPublicSuffix
229228
* @covers ::findPublicSuffixFromSection
230229
* @covers \Pdp\PublicSuffix::setSection
231230
* @covers \Pdp\PublicSuffix::isKnown
232231
* @covers \Pdp\PublicSuffix::isICANN
233232
* @covers \Pdp\PublicSuffix::isPrivate
233+
* @covers \Pdp\Domain::isResolvable
234234
* @covers \Pdp\Domain::withPublicSuffix
235235
* @covers \Pdp\Domain::isKnown
236236
* @covers \Pdp\Domain::isICANN
@@ -247,7 +247,7 @@ public function testSubDomainIsNull(): void
247247

248248
/**
249249
* @covers ::resolve
250-
* @covers ::resolveCookieDomain
250+
* @covers ::getCookieDomain
251251
* @covers ::validateDomain
252252
* @covers ::validateSection
253253
* @covers \Pdp\IDNAConverterTrait::parse
@@ -291,7 +291,7 @@ public function testWithAbsoluteHostInvalid(): void
291291

292292
/**
293293
* @covers ::resolve
294-
* @covers ::resolvePrivateDomain
294+
* @covers ::getPrivateDomain
295295
* @covers ::validateDomain
296296
* @covers ::validateSection
297297
* @covers ::findPublicSuffix
@@ -311,7 +311,7 @@ public function testWithPrivateDomainInvalid(): void
311311

312312
/**
313313
* @covers ::resolve
314-
* @covers ::resolvePrivateDomain
314+
* @covers ::getPrivateDomain
315315
* @covers ::validateDomain
316316
* @covers ::validateSection
317317
* @covers ::findPublicSuffix
@@ -381,7 +381,7 @@ public function testWithDomainInterfaceObject(): void
381381

382382
/**
383383
* @covers ::resolve
384-
* @covers ::resolveICANNDomain
384+
* @covers ::getICANNDomain
385385
* @covers ::validateDomain
386386
* @covers \Pdp\Domain::setRegistrableDomain
387387
* @covers \Pdp\Domain::getRegistrableDomain
@@ -399,7 +399,7 @@ public function testGetRegistrableDomain($publicSuffix, $registrableDomain, $dom
399399

400400
/**
401401
* @covers ::resolve
402-
* @covers ::resolveICANNDomain
402+
* @covers ::getICANNDomain
403403
* @covers ::validateDomain
404404
* @covers \Pdp\IDNAConverterTrait::parse
405405
* @covers \Pdp\Domain::setPublicSuffix
@@ -477,8 +477,6 @@ public function testGetPublicSuffixThrowsCouldNotResolvePublicSuffix($domain, $s
477477

478478
public function invalidParseProvider(): iterable
479479
{
480-
$long_label = implode('.', array_fill(0, 62, 'a'));
481-
482480
return [
483481
'single label host' => ['localhost', Rules::ICANN_DOMAINS],
484482
];
@@ -710,20 +708,20 @@ public function testResolveWithIDNAOptions(): void
710708
}
711709

712710
/**
713-
* @covers ::getCookieEffectiveTLD
714-
* @covers ::getICANNEffectiveTLD
715-
* @covers ::getPrivateEffectiveTLD
711+
* @covers ::getCookieDomain
712+
* @covers ::getICANNDomain
713+
* @covers ::getPrivateDomain
716714
* @dataProvider effectiveTLDProvider
717715
* @param string $host
718716
* @param string $cookieETLD
719717
* @param string $icannETLD
720718
* @param string $privateETLD
721719
*/
722-
public function testEffectiveTLDResolution(string $host, string $cookieETLD, string $icannETLD, string $privateETLD): void
720+
public function testGetCookieDomain(string $host, string $cookieETLD, string $icannETLD, string $privateETLD): void
723721
{
724-
self::assertSame($cookieETLD, (string) $this->rules->getCookieEffectiveTLD($host));
725-
self::assertSame($icannETLD, (string) $this->rules->getICANNEffectiveTLD($host));
726-
self::assertSame($privateETLD, (string) $this->rules->getPrivateEffectiveTLD($host));
722+
self::assertSame($cookieETLD, (string) $this->rules->getCookieDomain($host)->getPublicSuffix());
723+
self::assertSame($icannETLD, (string) $this->rules->getICANNDomain($host)->getPublicSuffix());
724+
self::assertSame($privateETLD, (string) $this->rules->getPrivateDomain($host)->getPublicSuffix());
727725
}
728726

729727
public function effectiveTLDProvider(): iterable

0 commit comments

Comments
 (0)