Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65e4f29bc0 | ||
|
|
3453e44158 | ||
|
|
8ee1bbcc6f | ||
|
|
d8b2093eed |
17
CONTRIBUTING.md
Normal file
17
CONTRIBUTING.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Contributing to Cloudflare PHP API Binding
|
||||||
|
|
||||||
|
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
|
||||||
|
|
||||||
|
## How To Contribute
|
||||||
|
|
||||||
|
We welcome community contribution to this repository. To help add functionality or address issues, please take the following steps:
|
||||||
|
|
||||||
|
* Fork the repository from the master branch.
|
||||||
|
* Create a new branch for your features / fixes.
|
||||||
|
* Make the changes you wish to see.
|
||||||
|
* Add tests for all changes.
|
||||||
|
* Run `make fix` command to ensure the code is styled.
|
||||||
|
* Run `make test` command to ensure the tests pass.
|
||||||
|
* Create a pull request with details of what changes have been made and explanation of new behaviour.
|
||||||
|
* Ensure documentation contains the correct information.
|
||||||
|
* Pull requests will be reviewed and hopefully merged into a release.
|
||||||
@@ -11,7 +11,6 @@ The recommended way to install this package is via the Packagist Dependency Mana
|
|||||||
The Cloudflare API can be found [here](https://api.cloudflare.com/).
|
The Cloudflare API can be found [here](https://api.cloudflare.com/).
|
||||||
Each API call is provided via a similarly named function within various classes in the **Cloudflare\API\Endpoints** namespace:
|
Each API call is provided via a similarly named function within various classes in the **Cloudflare\API\Endpoints** namespace:
|
||||||
|
|
||||||
|
|
||||||
- [x] [DNS Records](https://www.cloudflare.com/dns/)
|
- [x] [DNS Records](https://www.cloudflare.com/dns/)
|
||||||
- [x] Zones
|
- [x] Zones
|
||||||
- [x] User Administration (partial)
|
- [x] User Administration (partial)
|
||||||
@@ -38,6 +37,10 @@ $user = new Cloudflare\API\Endpoints\User($adapter);
|
|||||||
echo $user->getUserID();
|
echo $user->getUserID();
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Contributions
|
||||||
|
|
||||||
|
We welcome community contribution to this repository. [CONTRIBUTING.md](CONTRIBUTING.md) will help you start contributing.
|
||||||
|
|
||||||
## Licensing
|
## Licensing
|
||||||
|
|
||||||
Licensed under the 3-clause BSD license. See the [LICENSE](LICENSE) file for details.
|
Licensed under the 3-clause BSD license. See the [LICENSE](LICENSE) file for details.
|
||||||
|
|||||||
@@ -109,6 +109,43 @@ class Zones implements API
|
|||||||
return $zones->result[0]->id;
|
return $zones->result[0]->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||||
|
*
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param string $since
|
||||||
|
* @param string $until
|
||||||
|
* @param bool $continuous
|
||||||
|
* @return \stdClass
|
||||||
|
*/
|
||||||
|
public function getAnalyticsDashboard(string $zoneID, string $since = "-10080", string $until = "0", bool $continuous = true): \stdClass
|
||||||
|
{
|
||||||
|
$response = $this->adapter->get('zones/' . $zoneID . '/analytics/dashboard', [], ["since" => $since, "until" => $until, "continuous" => $continuous]);
|
||||||
|
|
||||||
|
return json_decode($response->getBody())->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||||
|
*
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param bool $enable
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function changeDevelopmentMode(string $zoneID, bool $enable = false): bool
|
||||||
|
{
|
||||||
|
$response = $this->adapter->patch('zones/' . $zoneID . '/settings/development_mode', [], ["value" => ($enable ? "on" : "off")]);
|
||||||
|
|
||||||
|
$body = json_decode($response->getBody());
|
||||||
|
|
||||||
|
if ($body->success) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Purge Everything
|
* Purge Everything
|
||||||
* @param string $zoneID
|
* @param string $zoneID
|
||||||
|
|||||||
@@ -129,6 +129,49 @@ class ZonesTest extends TestCase
|
|||||||
$this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result);
|
$this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetAnalyticsDashboard()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getAnalyticsDashboard.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/analytics/dashboard'),
|
||||||
|
$this->equalTo([]),
|
||||||
|
$this->equalTo(["since" => "-10080", "until" => "0", "continuous" => true])
|
||||||
|
);
|
||||||
|
|
||||||
|
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||||
|
$analytics = $zones->getAnalyticsDashboard("c2547eb745079dac9320b638f5e225cf483cc5cfdda41");
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute("since", $analytics->totals);
|
||||||
|
$this->assertObjectHasAttribute("since", $analytics->timeseries[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testChangeDevelopmentMode()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/changeDevelopmentMode.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('patch')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('patch')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/development_mode'),
|
||||||
|
$this->equalTo([]),
|
||||||
|
$this->equalTo(["value" => "on"])
|
||||||
|
);
|
||||||
|
|
||||||
|
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||||
|
$result = $zones->changeDevelopmentMode("c2547eb745079dac9320b638f5e225cf483cc5cfdda41", true);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
public function testCachePurgeEverything()
|
public function testCachePurgeEverything()
|
||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.json');
|
||||||
|
|||||||
12
tests/Fixtures/Endpoints/changeDevelopmentMode.json
Normal file
12
tests/Fixtures/Endpoints/changeDevelopmentMode.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"id": "development_mode",
|
||||||
|
"value": "on",
|
||||||
|
"modified_on": "2017-11-06T05:16:42.864300Z",
|
||||||
|
"time_remaining": 10800,
|
||||||
|
"editable": true
|
||||||
|
},
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
176
tests/Fixtures/Endpoints/getAnalyticsDashboard.json
Normal file
176
tests/Fixtures/Endpoints/getAnalyticsDashboard.json
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"messages": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"totals": {
|
||||||
|
"since": "2015-01-01T12:23:00Z",
|
||||||
|
"until": "2015-01-02T12:23:00Z",
|
||||||
|
"requests": {
|
||||||
|
"all": 1234085328,
|
||||||
|
"cached": 1234085328,
|
||||||
|
"uncached": 13876154,
|
||||||
|
"content_type": {
|
||||||
|
"css": 15343,
|
||||||
|
"html": 1234213,
|
||||||
|
"javascript": 318236,
|
||||||
|
"gif": 23178,
|
||||||
|
"jpeg": 1982048
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"US": 4181364,
|
||||||
|
"AG": 37298,
|
||||||
|
"GI": 293846
|
||||||
|
},
|
||||||
|
"ssl": {
|
||||||
|
"encrypted": 12978361,
|
||||||
|
"unencrypted": 781263
|
||||||
|
},
|
||||||
|
"http_status": {
|
||||||
|
"200": 13496983,
|
||||||
|
"301": 283,
|
||||||
|
"400": 187936,
|
||||||
|
"402": 1828,
|
||||||
|
"404": 1293
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bandwidth": {
|
||||||
|
"all": 213867451,
|
||||||
|
"cached": 113205063,
|
||||||
|
"uncached": 113205063,
|
||||||
|
"content_type": {
|
||||||
|
"css": 237421,
|
||||||
|
"html": 1231290,
|
||||||
|
"javascript": 123245,
|
||||||
|
"gif": 1234242,
|
||||||
|
"jpeg": 784278
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"US": 123145433,
|
||||||
|
"AG": 2342483,
|
||||||
|
"GI": 984753
|
||||||
|
},
|
||||||
|
"ssl": {
|
||||||
|
"encrypted": 37592942,
|
||||||
|
"unencrypted": 237654192
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"threats": {
|
||||||
|
"all": 23423873,
|
||||||
|
"country": {
|
||||||
|
"US": 123,
|
||||||
|
"CN": 523423,
|
||||||
|
"AU": 91
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"user.ban.ip": 123,
|
||||||
|
"hot.ban.unknown": 5324,
|
||||||
|
"macro.chl.captchaErr": 1341,
|
||||||
|
"macro.chl.jschlErr": 5323
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pageviews": {
|
||||||
|
"all": 5724723,
|
||||||
|
"search_engines": {
|
||||||
|
"googlebot": 35272,
|
||||||
|
"pingdom": 13435,
|
||||||
|
"bingbot": 5372,
|
||||||
|
"baidubot": 1345
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uniques": {
|
||||||
|
"all": 12343
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeseries": [
|
||||||
|
{
|
||||||
|
"since": "2015-01-01T12:23:00Z",
|
||||||
|
"until": "2015-01-02T12:23:00Z",
|
||||||
|
"requests": {
|
||||||
|
"all": 1234085328,
|
||||||
|
"cached": 1234085328,
|
||||||
|
"uncached": 13876154,
|
||||||
|
"content_type": {
|
||||||
|
"css": 15343,
|
||||||
|
"html": 1234213,
|
||||||
|
"javascript": 318236,
|
||||||
|
"gif": 23178,
|
||||||
|
"jpeg": 1982048
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"US": 4181364,
|
||||||
|
"AG": 37298,
|
||||||
|
"GI": 293846
|
||||||
|
},
|
||||||
|
"ssl": {
|
||||||
|
"encrypted": 12978361,
|
||||||
|
"unencrypted": 781263
|
||||||
|
},
|
||||||
|
"http_status": {
|
||||||
|
"200": 13496983,
|
||||||
|
"301": 283,
|
||||||
|
"400": 187936,
|
||||||
|
"402": 1828,
|
||||||
|
"404": 1293
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bandwidth": {
|
||||||
|
"all": 213867451,
|
||||||
|
"cached": 113205063,
|
||||||
|
"uncached": 113205063,
|
||||||
|
"content_type": {
|
||||||
|
"css": 237421,
|
||||||
|
"html": 1231290,
|
||||||
|
"javascript": 123245,
|
||||||
|
"gif": 1234242,
|
||||||
|
"jpeg": 784278
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"US": 123145433,
|
||||||
|
"AG": 2342483,
|
||||||
|
"GI": 984753
|
||||||
|
},
|
||||||
|
"ssl": {
|
||||||
|
"encrypted": 37592942,
|
||||||
|
"unencrypted": 237654192
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"threats": {
|
||||||
|
"all": 23423873,
|
||||||
|
"country": {
|
||||||
|
"US": 123,
|
||||||
|
"CN": 523423,
|
||||||
|
"AU": 91
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"user.ban.ip": 123,
|
||||||
|
"hot.ban.unknown": 5324,
|
||||||
|
"macro.chl.captchaErr": 1341,
|
||||||
|
"macro.chl.jschlErr": 5323
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pageviews": {
|
||||||
|
"all": 5724723,
|
||||||
|
"search_engines": {
|
||||||
|
"googlebot": 35272,
|
||||||
|
"pingdom": 13435,
|
||||||
|
"bingbot": 5372,
|
||||||
|
"baidubot": 1345
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uniques": {
|
||||||
|
"all": 12343
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"query": {
|
||||||
|
"since": "2015-01-01T12:23:00Z",
|
||||||
|
"until": "2015-01-02T12:23:00Z",
|
||||||
|
"time_delta": 60
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user