diff --git a/src/Endpoints/DNS.php b/src/Endpoints/DNS.php index ffc7feb..dc57566 100644 --- a/src/Endpoints/DNS.php +++ b/src/Endpoints/DNS.php @@ -52,7 +52,7 @@ class DNS implements API } if (!empty($priority)) { - $options['priority'] = $priority; + $options['priority'] = (int)$priority; } $user = $this->adapter->post('zones/' . $zoneID . '/dns_records', $options); diff --git a/src/Endpoints/Zones.php b/src/Endpoints/Zones.php index 432402d..323f202 100644 --- a/src/Endpoints/Zones.php +++ b/src/Endpoints/Zones.php @@ -158,10 +158,10 @@ class Zones implements API return false; } - public function cachePurge(string $zoneID, array $files = null, array $tags = null): bool + public function cachePurge(string $zoneID, array $files = null, array $tags = null, array $hosts = null): bool { - if ($files === null && $tags === null) { - throw new EndpointException('No files or tags to purge.'); + if ($files === null && $tags === null && $hosts === null) { + throw new EndpointException('No files, tags or hosts to purge.'); } $options = []; @@ -172,6 +172,10 @@ class Zones implements API if (!is_null($tags)) { $options['tags'] = $tags; } + + if (!is_null($hosts)) { + $options['tags'] = $tags; + } $user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', $options); diff --git a/tests/Endpoints/ZonesTest.php b/tests/Endpoints/ZonesTest.php index 5277643..5221eb7 100644 --- a/tests/Endpoints/ZonesTest.php +++ b/tests/Endpoints/ZonesTest.php @@ -144,7 +144,7 @@ class ZonesTest extends TestCase $this->assertObjectHasAttribute('since', $analytics->totals); $this->assertObjectHasAttribute('since', $analytics->timeseries[0]); } - + public function testChangeDevelopmentMode() { $response = $this->getPsr7JsonResponseForFixture('Endpoints/changeDevelopmentMode.json'); @@ -184,4 +184,30 @@ class ZonesTest extends TestCase $this->assertTrue($result); } + + public function testCachePurgeHost() + { + $response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeHost.json'); + + $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); + $mock->method('delete')->willReturn($response); + + $mock->expects($this->once()) + ->method('delete') + ->with( + $this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'), + $this->equalTo( + [ + 'files' => [], + 'tags' => [], + 'hosts' => ['dash.cloudflare.com'] + ] + ) + ); + + $zones = new \Cloudflare\API\Endpoints\Zones($mock); + $result = $zones->cachePurge('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', [], [], ['dash.cloudflare.com']); + + $this->assertTrue($result); + } } diff --git a/tests/Fixtures/Endpoints/cachePurgeHost.json b/tests/Fixtures/Endpoints/cachePurgeHost.json new file mode 100644 index 0000000..bedd2f5 --- /dev/null +++ b/tests/Fixtures/Endpoints/cachePurgeHost.json @@ -0,0 +1,8 @@ +{ + "success": true, + "errors": [], + "messages": [], + "result": { + "id": "023e105f4ecef8ad9ca31a8372d0c353" + } +}