Compare commits
115 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7aa3a118af | ||
|
|
ae2c680e85 | ||
|
|
78eadb9a47 | ||
|
|
e1c2539d9a | ||
|
|
471a42d554 | ||
|
|
d9c0a27b7d | ||
|
|
8182aa8810 | ||
|
|
df12f7ba6f | ||
|
|
9d434a23b3 | ||
|
|
f105d38d85 | ||
|
|
910644f88d | ||
|
|
68b9fa3353 | ||
|
|
c394f5ac4d | ||
|
|
e94ab8ddbe | ||
|
|
2b25365988 | ||
|
|
bd92b2a4c0 | ||
|
|
6acf09ba82 | ||
|
|
6410f50f6d | ||
|
|
d6f0eada8c | ||
|
|
6f1ac605f5 | ||
|
|
9311583f43 | ||
|
|
4694904b38 | ||
|
|
7e3e367f16 | ||
|
|
97af6a2ca6 | ||
|
|
3da4f053f0 | ||
|
|
1e369bd9cd | ||
|
|
5841936f04 | ||
|
|
a8017f864b | ||
|
|
ba2c37fe1e | ||
|
|
db0f0eed79 | ||
|
|
4e17cc8984 | ||
|
|
c1193f7f91 | ||
|
|
67a24c5784 | ||
|
|
8bb2e8a110 | ||
|
|
9d1750594e | ||
|
|
ed6b1ec5a2 | ||
|
|
90e01ff095 | ||
|
|
8c68295daa | ||
|
|
57318b2a56 | ||
|
|
099f383ef3 | ||
|
|
2639331c2b | ||
|
|
d871bdd007 | ||
|
|
c60064e542 | ||
|
|
0492e9b17b | ||
|
|
5bea924c76 | ||
|
|
943b0d85d4 | ||
|
|
e28fed86d1 | ||
|
|
45df26fec3 | ||
|
|
a39d6fb170 | ||
|
|
4c288c38d7 | ||
|
|
2dd4d8f883 | ||
|
|
59f6d72d0a | ||
|
|
f19f17ea6f | ||
|
|
a3a346ccb2 | ||
|
|
deb420d087 | ||
|
|
640b787540 | ||
|
|
8df0ec5511 | ||
|
|
938065cdf3 | ||
|
|
9076d714f4 | ||
|
|
c9d2782b88 | ||
|
|
1cca3e0724 | ||
|
|
63be6cf154 | ||
|
|
c06fe79ad0 | ||
|
|
cca073c809 | ||
|
|
35ce8eadf1 | ||
|
|
d95573976e | ||
|
|
3bfd5e17f1 | ||
|
|
19a4f481d3 | ||
|
|
9c56941516 | ||
|
|
e18a64e7e4 | ||
|
|
3585dde8ea | ||
|
|
730b0c97ee | ||
|
|
dc53414c2a | ||
|
|
a628cac283 | ||
|
|
0112425a61 | ||
|
|
fe854e1b21 | ||
|
|
45cb8ee539 | ||
|
|
cd2fd73cc3 | ||
|
|
bd83c6d48a | ||
|
|
4e3d307bdd | ||
|
|
99d89e7dc3 | ||
|
|
55e81fe02c | ||
|
|
d00a1d3f44 | ||
|
|
c8e85d2582 | ||
|
|
ff42f334a5 | ||
|
|
dfa299c895 | ||
|
|
e1864a6824 | ||
|
|
c9d21466aa | ||
|
|
b15b4ecc51 | ||
|
|
0aa9f6c05a | ||
|
|
a09478eb2f | ||
|
|
f6cb9a8e30 | ||
|
|
bc9e15a557 | ||
|
|
5caae74370 | ||
|
|
ee4a42ea06 | ||
|
|
90eaea7be2 | ||
|
|
dac1e15e2d | ||
|
|
a4224265d8 | ||
|
|
4f3f82b1ba | ||
|
|
7c9ea4874d | ||
|
|
0920fc48b2 | ||
|
|
65e4f29bc0 | ||
|
|
3453e44158 | ||
|
|
8ee1bbcc6f | ||
|
|
d8b2093eed | ||
|
|
3cfaed1019 | ||
|
|
84ee7302ca | ||
|
|
f088c67314 | ||
|
|
30fc22aa5b | ||
|
|
0d89f13f9b | ||
|
|
ca9e5bbc28 | ||
|
|
f0213ecf92 | ||
|
|
b4a6237509 | ||
|
|
a909f3780e | ||
|
|
6a76e1cc3c |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
/.idea
|
||||
/vendor/
|
||||
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.
|
||||
2
Makefile
2
Makefile
@@ -10,6 +10,8 @@ fix:
|
||||
|
||||
lint:
|
||||
php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs --dry-run
|
||||
php $(HERE)/vendor/bin/phpmd src/ text cleancode,codesize,controversial,design,naming,unusedcode
|
||||
php $(HERE)/vendor/bin/phpmd tests/ text cleancode,codesize,controversial,design,naming,unusedcode
|
||||
|
||||
test:
|
||||
php $(HERE)/vendor/bin/phpunit --configuration $(HERE)/phpunit.xml
|
||||
|
||||
14
README.md
14
README.md
@@ -4,25 +4,25 @@
|
||||
|
||||
## Installation
|
||||
|
||||
The recommended way to install this package is via the Packagist Dependency Manager ([cloudflare/sdk](https://packagist.org/packages/cloudflare/sdk)). You can specific usage examples on the Cloudflare Knowledge Base under: [Cloudflare PHP API Binding](https://support.cloudflare.com/hc/en-us/articles/115001661191)
|
||||
The recommended way to install this package is via the Packagist Dependency Manager ([cloudflare/sdk](https://packagist.org/packages/cloudflare/sdk)). You can get specific usage examples on the Cloudflare Knowledge Base under: [Cloudflare PHP API Binding](https://support.cloudflare.com/hc/en-us/articles/115001661191)
|
||||
|
||||
## Cloudflare API version 4
|
||||
|
||||
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:
|
||||
|
||||
|
||||
- [x] [DNS Records](https://www.cloudflare.com/dns/)
|
||||
- [x] Zones
|
||||
- [x] User Administration (partial)
|
||||
- [x] [Cloudflare IPs](https://www.cloudflare.com/ips/)
|
||||
- [x] [Page Rules](https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-)
|
||||
- [ ] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/)
|
||||
- [x] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/)
|
||||
- [ ] Virtual DNS Management
|
||||
- [ ] Custom hostnames
|
||||
- [x] Custom hostnames
|
||||
- [x] Manage TLS settings
|
||||
- [x] Zone Lockdown and User-Agent Block rules
|
||||
- [ ] Organization Administration
|
||||
- [ ] [Railgun](https://www.cloudflare.com/railgun/) administration
|
||||
- [x] [Railgun](https://www.cloudflare.com/railgun/) administration
|
||||
- [ ] [Keyless SSL](https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/)
|
||||
- [ ] [Origin CA](https://blog.cloudflare.com/universal-ssl-encryption-all-the-way-to-the-origin-for-free/)
|
||||
|
||||
@@ -38,6 +38,10 @@ $user = new Cloudflare\API\Endpoints\User($adapter);
|
||||
echo $user->getUserID();
|
||||
```
|
||||
|
||||
## Contributions
|
||||
|
||||
We welcome community contribution to this repository. [CONTRIBUTING.md](CONTRIBUTING.md) will help you start contributing.
|
||||
|
||||
## Licensing
|
||||
|
||||
Licensed under the 3-clause BSD license. See the [LICENSE](LICENSE) file for details.
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
"require": {
|
||||
"guzzlehttp/guzzle": "^6.2.2",
|
||||
"php": ">=7.0.0",
|
||||
"psr/http-message": "~1.0"
|
||||
"psr/http-message": "~1.0",
|
||||
"ext-json": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "5.7.5",
|
||||
@@ -28,5 +29,10 @@
|
||||
"classmap": [
|
||||
"tests/"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"preferred-install": "dist",
|
||||
"sort-packages": true,
|
||||
"optimize-autoloader": true
|
||||
}
|
||||
}
|
||||
|
||||
3002
composer.lock
generated
Normal file
3002
composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
BIN
phpcbf.phar
Normal file
BIN
phpcbf.phar
Normal file
Binary file not shown.
BIN
phpcs.phar
Normal file
BIN
phpcs.phar
Normal file
Binary file not shown.
@@ -21,55 +21,56 @@ interface Adapter
|
||||
* Adapter constructor.
|
||||
*
|
||||
* @param Auth $auth
|
||||
* @param String $baseURI
|
||||
* @param string $baseURI
|
||||
*/
|
||||
public function __construct(Auth $auth, String $baseURI);
|
||||
public function __construct(Auth $auth, string $baseURI);
|
||||
|
||||
/**
|
||||
* Sends a GET request.
|
||||
* Per Robustness Principle - not including the ability to send a body with a GET request (though possible in the
|
||||
* RFCs, it is never useful).
|
||||
*
|
||||
* @param String $uri
|
||||
* @param string $uri
|
||||
* @param array $data
|
||||
* @param array $headers
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function get(String $uri, array $query, array $headers): ResponseInterface;
|
||||
public function get(string $uri, array $data = [], array $headers = []): ResponseInterface;
|
||||
|
||||
/**
|
||||
* @param String $uri
|
||||
* @param string $uri
|
||||
* @param array $data
|
||||
* @param array $headers
|
||||
* @param array $body
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function post(String $uri, array $headers, array $body): ResponseInterface;
|
||||
public function post(string $uri, array $data = [], array $headers = []): ResponseInterface;
|
||||
|
||||
/**
|
||||
* @param String $uri
|
||||
* @param string $uri
|
||||
* @param array $data
|
||||
* @param array $headers
|
||||
* @param array $body
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function put(String $uri, array $headers, array $body): ResponseInterface;
|
||||
public function put(string $uri, array $data = [], array $headers = []): ResponseInterface;
|
||||
|
||||
/**
|
||||
* @param String $uri
|
||||
* @param string $uri
|
||||
* @param array $data
|
||||
* @param array $headers
|
||||
* @param array $body
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function patch(String $uri, array $headers, array $body): ResponseInterface;
|
||||
public function patch(string $uri, array $data = [], array $headers = []): ResponseInterface;
|
||||
|
||||
/**
|
||||
* @param String $uri
|
||||
* @param string $uri
|
||||
* @param array $data
|
||||
* @param array $headers
|
||||
* @param array $body
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function delete(String $uri, array $headers, array $body): ResponseInterface;
|
||||
public function delete(string $uri, array $data = [], array $headers = []): ResponseInterface;
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@ class Guzzle implements Adapter
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function __construct(Auth $auth, String $baseURI = null)
|
||||
public function __construct(Auth $auth, string $baseURI = null)
|
||||
{
|
||||
if ($baseURI === null) {
|
||||
$baseURI = "https://api.cloudflare.com/client/v4/";
|
||||
$baseURI = 'https://api.cloudflare.com/client/v4/';
|
||||
}
|
||||
|
||||
$headers = $auth->getHeaders();
|
||||
@@ -37,79 +37,56 @@ class Guzzle implements Adapter
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function get(String $uri, array $query = [], array $headers = []): ResponseInterface
|
||||
public function get(string $uri, array $data = [], array $headers = []): ResponseInterface
|
||||
{
|
||||
$response = $this->client->get($uri, ['query' => $query, 'headers' => $headers]);
|
||||
|
||||
$this->checkError($response);
|
||||
return $response;
|
||||
return $this->request('get', $uri, $data, $headers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function post(String $uri, array $headers = [], array $body = []): ResponseInterface
|
||||
public function post(string $uri, array $data = [], array $headers = []): ResponseInterface
|
||||
{
|
||||
$response = $this->client->post(
|
||||
$uri,
|
||||
[
|
||||
'headers' => $headers,
|
||||
'json' => $body
|
||||
]
|
||||
);
|
||||
|
||||
$this->checkError($response);
|
||||
return $response;
|
||||
return $this->request('post', $uri, $data, $headers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function put(String $uri, array $headers = [], array $body = []): ResponseInterface
|
||||
public function put(string $uri, array $data = [], array $headers = []): ResponseInterface
|
||||
{
|
||||
$response = $this->client->put(
|
||||
$uri,
|
||||
[
|
||||
'headers' => $headers,
|
||||
'json' => $body
|
||||
]
|
||||
);
|
||||
|
||||
$this->checkError($response);
|
||||
return $response;
|
||||
return $this->request('put', $uri, $data, $headers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function patch(String $uri, array $headers = [], array $body = []): ResponseInterface
|
||||
public function patch(string $uri, array $data = [], array $headers = []): ResponseInterface
|
||||
{
|
||||
$response = $this->client->patch(
|
||||
$uri,
|
||||
[
|
||||
'headers' => $headers,
|
||||
'json' => $body
|
||||
]
|
||||
);
|
||||
|
||||
$this->checkError($response);
|
||||
return $response;
|
||||
return $this->request('patch', $uri, $data, $headers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function delete(String $uri, array $headers = [], array $body = []): ResponseInterface
|
||||
public function delete(string $uri, array $data = [], array $headers = []): ResponseInterface
|
||||
{
|
||||
$response = $this->client->delete(
|
||||
$uri,
|
||||
[
|
||||
'headers' => $headers,
|
||||
'json' => $body
|
||||
]
|
||||
);
|
||||
return $this->request('delete', $uri, $data, $headers);
|
||||
}
|
||||
|
||||
public function request(string $method, string $uri, array $data = [], array $headers = [])
|
||||
{
|
||||
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) {
|
||||
throw new \InvalidArgumentException('Request method must be get, post, put, patch, or delete');
|
||||
}
|
||||
|
||||
$response = $this->client->$method($uri, [
|
||||
'headers' => $headers,
|
||||
($method === 'get' ? 'query' : 'json') => $data,
|
||||
]);
|
||||
|
||||
$this->checkError($response);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
@@ -121,14 +98,12 @@ class Guzzle implements Adapter
|
||||
throw new JSONException();
|
||||
}
|
||||
|
||||
if (isset($json->errors)) {
|
||||
foreach ($json->errors as $error) {
|
||||
throw new ResponseException($error->message, $error->code);
|
||||
}
|
||||
if (isset($json->errors) && count($json->errors) >= 1) {
|
||||
throw new ResponseException($json->errors[0]->message, $json->errors[0]->code);
|
||||
}
|
||||
|
||||
if (isset($json->success) && ($json->success === false)) {
|
||||
throw new ResponseException("Request was unsuccessful.");
|
||||
if (isset($json->success) && !$json->success) {
|
||||
throw new ResponseException('Request was unsuccessful.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ class APIKey implements Auth
|
||||
private $email;
|
||||
private $apiKey;
|
||||
|
||||
public function __construct(String $email, String $apiKey)
|
||||
public function __construct(string $email, string $apiKey)
|
||||
{
|
||||
$this->email = $email;
|
||||
$this->apiKey = $apiKey;
|
||||
|
||||
@@ -11,7 +11,7 @@ class UserServiceKey implements Auth
|
||||
{
|
||||
private $userServiceKey;
|
||||
|
||||
public function __construct(String $userServiceKey)
|
||||
public function __construct(string $userServiceKey)
|
||||
{
|
||||
$this->userServiceKey = $userServiceKey;
|
||||
}
|
||||
|
||||
33
src/Configurations/AccessRules.php
Normal file
33
src/Configurations/AccessRules.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Cloudflare\API\Configurations;
|
||||
|
||||
class AccessRules implements Configurations
|
||||
{
|
||||
private $config;
|
||||
|
||||
public function setIP(string $value)
|
||||
{
|
||||
$this->config = ['target' => 'ip', 'value' => $value];
|
||||
}
|
||||
|
||||
public function setIPRange(string $value)
|
||||
{
|
||||
$this->config = ['target' => 'ip_range', 'value' => $value];
|
||||
}
|
||||
|
||||
public function setCountry(string $value)
|
||||
{
|
||||
$this->config = ['target' => 'country', 'value' => $value];
|
||||
}
|
||||
|
||||
public function setASN(string $value)
|
||||
{
|
||||
$this->config = ['target' => 'asn', 'value' => $value];
|
||||
}
|
||||
|
||||
public function getArray(): array
|
||||
{
|
||||
return $this->config;
|
||||
}
|
||||
}
|
||||
@@ -14,28 +14,28 @@ class PageRulesActions implements Configurations
|
||||
|
||||
public function setAlwaysOnline(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("always_online", [
|
||||
$this->addConfigurationOption('always_online', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setAlwaysUseHTTPS(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("always_use_https", [
|
||||
$this->addConfigurationOption('always_use_https', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setBrowserCacheTTL(int $ttl)
|
||||
{
|
||||
$this->addConfigurationOption("browser_cache_ttl", [
|
||||
$this->addConfigurationOption('browser_cache_ttl', [
|
||||
'value' => $ttl
|
||||
]);
|
||||
}
|
||||
|
||||
public function setBrowserIntegrityCheck(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("browser_check", [
|
||||
$this->addConfigurationOption('browser_check', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
@@ -43,35 +43,35 @@ class PageRulesActions implements Configurations
|
||||
public function setBypassCacheOnCookie(string $value)
|
||||
{
|
||||
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
|
||||
throw new ConfigurationsException("Invalid cookie string.");
|
||||
throw new ConfigurationsException('Invalid cookie string.');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("bypass_cache_on_cookie", [
|
||||
$this->addConfigurationOption('bypass_cache_on_cookie', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setCacheByDeviceType(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("cache_by_device_type", [
|
||||
$this->addConfigurationOption('cache_by_device_type', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setCacheKey(string $value)
|
||||
{
|
||||
$this->addConfigurationOption("cache_key", [
|
||||
$this->addConfigurationOption('cache_key', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setCacheLevel(string $value)
|
||||
{
|
||||
if (!in_array($value, ["bypass", "basic", "simplified", "aggressive", "cache_everything"])) {
|
||||
throw new ConfigurationsException("Invalid cache level");
|
||||
if (!in_array($value, ['bypass', 'basic', 'simplified', 'aggressive', 'cache_everything'])) {
|
||||
throw new ConfigurationsException('Invalid cache level');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("cache_level", [
|
||||
$this->addConfigurationOption('cache_level', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
@@ -79,31 +79,31 @@ class PageRulesActions implements Configurations
|
||||
public function setCacheOnCookie(string $value)
|
||||
{
|
||||
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
|
||||
throw new ConfigurationsException("Invalid cookie string.");
|
||||
throw new ConfigurationsException('Invalid cookie string.');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("cache_on_cookie", [
|
||||
$this->addConfigurationOption('cache_on_cookie', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setDisableApps(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("disable_apps", [
|
||||
$this->addConfigurationOption('disable_apps', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setDisablePerformance(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("disable_performance", [
|
||||
$this->addConfigurationOption('disable_performance', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setDisableSecurity(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("disable_security", [
|
||||
$this->addConfigurationOption('disable_security', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
@@ -111,17 +111,17 @@ class PageRulesActions implements Configurations
|
||||
public function setEdgeCacheTTL(int $value)
|
||||
{
|
||||
if ($value > 2419200) {
|
||||
throw new ConfigurationsException("Edge Cache TTL too high.");
|
||||
throw new ConfigurationsException('Edge Cache TTL too high.');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("edge_cache_ttl", [
|
||||
$this->addConfigurationOption('edge_cache_ttl', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setEmailObfuscation(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("disable_security", [
|
||||
$this->addConfigurationOption('disable_security', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
@@ -133,161 +133,163 @@ class PageRulesActions implements Configurations
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("forwarding_url", [
|
||||
'status_code' => $statusCode,
|
||||
'url' => $forwardingUrl,
|
||||
'value' => [
|
||||
'status_code' => $statusCode,
|
||||
'url' => $forwardingUrl,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function setHostHeaderOverride(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("host_header_override", [
|
||||
$this->addConfigurationOption('host_header_override', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setHotlinkProtection(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("hotlink_protection", [
|
||||
$this->addConfigurationOption('hotlink_protection', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setIPGeoLocationHeader(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("ip_geolocation", [
|
||||
$this->addConfigurationOption('ip_geolocation', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setMinification(bool $html, bool $css, bool $js)
|
||||
public function setMinification(bool $html, bool $css, bool $javascript)
|
||||
{
|
||||
$this->addConfigurationOption("minification", [
|
||||
$this->addConfigurationOption('minification', [
|
||||
'html' => $this->getBoolAsOnOrOff($html),
|
||||
'css' => $this->getBoolAsOnOrOff($css),
|
||||
'js' => $this->getBoolAsOnOrOff($js),
|
||||
'js' => $this->getBoolAsOnOrOff($javascript),
|
||||
]);
|
||||
}
|
||||
|
||||
public function setMirage(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("mirage", [
|
||||
$this->addConfigurationOption('mirage', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setOriginErrorPagePassthru(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("origin_error_page_pass_thru", [
|
||||
$this->addConfigurationOption('origin_error_page_pass_thru', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setQueryStringSort(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("sort_query_string_for_cache", [
|
||||
$this->addConfigurationOption('sort_query_string_for_cache', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setDisableRailgun(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("disable_railgun", [
|
||||
$this->addConfigurationOption('disable_railgun', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setResolveOverride(bool $value)
|
||||
{
|
||||
$this->addConfigurationOption("resolve_override", [
|
||||
$this->addConfigurationOption('resolve_override', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setRespectStrongEtag(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("respect_strong_etag", [
|
||||
$this->addConfigurationOption('respect_strong_etag', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setResponseBuffering(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("response_buffering", [
|
||||
$this->addConfigurationOption('response_buffering', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setRocketLoader(string $value)
|
||||
{
|
||||
if (!in_array($value, ["off", "manual", "automatic"])) {
|
||||
if (!in_array($value, ['off', 'manual', 'automatic'])) {
|
||||
throw new ConfigurationsException('Rocket Loader can only be off, automatic, or manual.');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("rocket_loader", [
|
||||
$this->addConfigurationOption('rocket_loader', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setSecurityLevel(string $value)
|
||||
{
|
||||
if (!in_array($value, ["off", "essentially_off", "low", "medium", "high", "under_attack"])) {
|
||||
if (!in_array($value, ['off', 'essentially_off', 'low', 'medium', 'high', 'under_attack'])) {
|
||||
throw new ConfigurationsException('Can only be set to off, essentially_off, low, medium, high or under_attack.');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("security_level", [
|
||||
$this->addConfigurationOption('security_level', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setServerSideExcludes(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("server_side_exclude", [
|
||||
$this->addConfigurationOption('server_side_exclude', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setSmartErrors(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("smart_errors", [
|
||||
$this->addConfigurationOption('smart_errors', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setSSL(string $value)
|
||||
{
|
||||
if (!in_array($value, ["off", "flexible", "full", "strict", "origin_pull"])) {
|
||||
if (!in_array($value, ['off', 'flexible', 'full', 'strict', 'origin_pull'])) {
|
||||
throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.');
|
||||
}
|
||||
|
||||
$this->addConfigurationOption("smart_errors", [
|
||||
$this->addConfigurationOption('ssl', [
|
||||
'value' => $value
|
||||
]);
|
||||
}
|
||||
|
||||
public function setTrueClientIpHeader(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("true_client_ip_header", [
|
||||
$this->addConfigurationOption('true_client_ip_header', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setWAF(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("waf", [
|
||||
$this->addConfigurationOption('waf', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setAutomatedHTTPSRewrites(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("automatic_https_rewrites", [
|
||||
$this->addConfigurationOption('automatic_https_rewrites', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
|
||||
public function setOpportunisticEncryption(bool $active)
|
||||
{
|
||||
$this->addConfigurationOption("opportunistic_encryption", [
|
||||
$this->addConfigurationOption('opportunistic_encryption', [
|
||||
'value' => $this->getBoolAsOnOrOff($active)
|
||||
]);
|
||||
}
|
||||
@@ -297,11 +299,11 @@ class PageRulesActions implements Configurations
|
||||
return $this->configs;
|
||||
}
|
||||
|
||||
private function addConfigurationOption($id, array $configuration)
|
||||
private function addConfigurationOption(string $setting, array $configuration)
|
||||
{
|
||||
$configuration['id'] = $id;
|
||||
$configuration['id'] = $setting;
|
||||
|
||||
array_push($this->configs, (object) $configuration);
|
||||
array_push($this->configs, $configuration);
|
||||
}
|
||||
|
||||
private function getBoolAsOnOrOff(bool $value): string
|
||||
|
||||
@@ -14,13 +14,15 @@ class PageRulesTargets implements Configurations
|
||||
|
||||
public function __construct(string $queryUrl)
|
||||
{
|
||||
$target = new \stdClass();
|
||||
$target->target = 'url';
|
||||
$target->constraint = new \stdClass();
|
||||
$target->constraint->operator = "matches";
|
||||
$target->constraint->value = $queryUrl;
|
||||
|
||||
$this->targets = [$target];
|
||||
$this->targets = [
|
||||
[
|
||||
'target' => 'url',
|
||||
'constraint' => [
|
||||
'operator' => 'matches',
|
||||
'value' => $queryUrl
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public function getArray(): array
|
||||
|
||||
@@ -14,11 +14,7 @@ class UARules implements Configurations
|
||||
|
||||
public function addUA(string $value)
|
||||
{
|
||||
$object = new \stdClass();
|
||||
$object->target = "ua";
|
||||
$object->value = $value;
|
||||
|
||||
array_push($this->configs, $object);
|
||||
$this->configs[] = ['target' => 'ua', 'value' => $value];
|
||||
}
|
||||
|
||||
public function getArray(): array
|
||||
|
||||
@@ -14,20 +14,12 @@ class ZoneLockdown implements Configurations
|
||||
|
||||
public function addIP(string $value)
|
||||
{
|
||||
$object = new \stdClass();
|
||||
$object->target = "ip";
|
||||
$object->value = $value;
|
||||
|
||||
array_push($this->configs, $object);
|
||||
$this->configs[] = ['target' => 'ip', 'value' => $value];
|
||||
}
|
||||
|
||||
public function addIPRange(string $value)
|
||||
{
|
||||
$object = new \stdClass();
|
||||
$object->target = "ip_range";
|
||||
$object->value = $value;
|
||||
|
||||
array_push($this->configs, $object);
|
||||
$this->configs[] = ['target' => 'ip_range', 'value' => $value];
|
||||
}
|
||||
|
||||
public function getArray(): array
|
||||
|
||||
156
src/Endpoints/AccessRules.php
Normal file
156
src/Endpoints/AccessRules.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Configurations\Configurations;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class AccessRules implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
|
||||
*
|
||||
* @param string $zoneID
|
||||
* @param string $scopeType
|
||||
* @param string $mode
|
||||
* @param string $configurationTarget
|
||||
* @param string $configurationValue
|
||||
* @param int $page
|
||||
* @param int $perPage
|
||||
* @param string $order
|
||||
* @param string $direction
|
||||
* @param string $match
|
||||
* @param string $notes
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function listRules(
|
||||
string $zoneID,
|
||||
string $scopeType = '',
|
||||
string $mode = '',
|
||||
string $configurationTarget = '',
|
||||
string $configurationValue = '',
|
||||
int $page = 1,
|
||||
int $perPage = 50,
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
string $match = 'all',
|
||||
string $notes = ''
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage,
|
||||
'match' => $match
|
||||
];
|
||||
|
||||
if (!empty($scopeType)) {
|
||||
$query['scope_type'] = $scopeType;
|
||||
}
|
||||
|
||||
if (!empty($mode)) {
|
||||
$query['mode'] = $mode;
|
||||
}
|
||||
|
||||
if (!empty($configurationTarget)) {
|
||||
$query['configuration_target'] = $configurationTarget;
|
||||
}
|
||||
|
||||
if (!empty($configurationValue)) {
|
||||
$query['configuration_value'] = $configurationValue;
|
||||
}
|
||||
|
||||
if (!empty($order)) {
|
||||
$query['order'] = $order;
|
||||
}
|
||||
|
||||
if (!empty($direction)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
if (!empty($notes)) {
|
||||
$query['notes'] = $notes;
|
||||
}
|
||||
|
||||
$data = $this->adapter->get('zones/' . $zoneID . '/firewall/access_rules/rules', $query);
|
||||
$this->body = json_decode($data->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function createRule(
|
||||
string $zoneID,
|
||||
string $mode,
|
||||
Configurations $configuration,
|
||||
string $notes = null
|
||||
): bool {
|
||||
$options = [
|
||||
'mode' => $mode,
|
||||
'configuration' => $configuration->getArray()
|
||||
];
|
||||
|
||||
if ($notes !== null) {
|
||||
$options['notes'] = $notes;
|
||||
}
|
||||
|
||||
$query = $this->adapter->post('zones/' . $zoneID . '/firewall/access_rules/rules', $options);
|
||||
|
||||
$this->body = json_decode($query->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateRule(
|
||||
string $zoneID,
|
||||
string $ruleID,
|
||||
string $mode,
|
||||
string $notes = null
|
||||
): bool {
|
||||
$options = [
|
||||
'mode' => $mode
|
||||
];
|
||||
|
||||
if ($notes !== null) {
|
||||
$options['notes'] = $notes;
|
||||
}
|
||||
|
||||
$query = $this->adapter->patch('zones/' . $zoneID . '/firewall/access_rules/rules/' . $ruleID, $options);
|
||||
|
||||
$this->body = json_decode($query->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function deleteRule(string $zoneID, string $ruleID, string $cascade = 'none'): bool
|
||||
{
|
||||
$options = [
|
||||
'cascade' => $cascade
|
||||
];
|
||||
|
||||
$data = $this->adapter->delete('zones/' . $zoneID . '/firewall/access_rules/rules/' . $ruleID, $options);
|
||||
|
||||
$this->body = json_decode($data->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
153
src/Endpoints/CustomHostnames.php
Normal file
153
src/Endpoints/CustomHostnames.php
Normal file
@@ -0,0 +1,153 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 18/03/2018
|
||||
* Time: 21:46
|
||||
*/
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class CustomHostnames implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||
*
|
||||
* @param string $zoneID
|
||||
* @param string $hostname
|
||||
* @param string $sslMethod
|
||||
* @param string $sslType
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function addHostname(string $zoneID, string $hostname, string $sslMethod = 'http', string $sslType = 'dv'): \stdClass
|
||||
{
|
||||
$options = [
|
||||
'hostname' => $hostname,
|
||||
'ssl' => [
|
||||
'method' => $sslMethod,
|
||||
'type' => $sslType
|
||||
]
|
||||
];
|
||||
|
||||
$zone = $this->adapter->post('zones/'.$zoneID.'/custom_hostnames', $options);
|
||||
$this->body = json_decode($zone->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $zoneID
|
||||
* @param string $hostname
|
||||
* @param string $id
|
||||
* @param int $page
|
||||
* @param int $perPage
|
||||
* @param string $order
|
||||
* @param string $direction
|
||||
* @param int $ssl
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function listHostnames(
|
||||
string $zoneID,
|
||||
string $hostname = '',
|
||||
string $hostnameID = '',
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
int $ssl = 0
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage,
|
||||
'ssl' => $ssl
|
||||
];
|
||||
|
||||
if (!empty($hostname)) {
|
||||
$query['hostname'] = $hostname;
|
||||
}
|
||||
|
||||
if (!empty($hostnameID)) {
|
||||
$query['id'] = $hostnameID;
|
||||
}
|
||||
|
||||
if (!empty($order)) {
|
||||
$query['order'] = $order;
|
||||
}
|
||||
|
||||
if (!empty($direction)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$zone = $this->adapter->get('zones/'.$zoneID.'/custom_hostnames', $query);
|
||||
$this->body = json_decode($zone->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $zoneID
|
||||
* @param string $hostnameID
|
||||
* @return mixed
|
||||
*/
|
||||
public function getHostname(string $zoneID, string $hostnameID)
|
||||
{
|
||||
$zone = $this->adapter->get('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID);
|
||||
$this->body = json_decode($zone->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||
*
|
||||
* @param string $zoneID
|
||||
* @param string $hostnameID
|
||||
* @param string $sslMethod
|
||||
* @param string $sslType
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function updateHostname(string $zoneID, string $hostnameID, string $sslMethod = '', string $sslType = ''): \stdClass
|
||||
{
|
||||
$query = [];
|
||||
|
||||
if (!empty($sslMethod)) {
|
||||
$query['method'] = $sslMethod;
|
||||
}
|
||||
|
||||
if (!empty($sslType)) {
|
||||
$query['type'] = $sslType;
|
||||
}
|
||||
|
||||
$options = [
|
||||
'ssl' => $query
|
||||
];
|
||||
|
||||
$zone = $this->adapter->patch('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID, $options);
|
||||
$this->body = json_decode($zone->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $zoneID
|
||||
* @param string $hostnameID
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function deleteHostname(string $zoneID, string $hostnameID): \stdClass
|
||||
{
|
||||
$zone = $this->adapter->delete('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID);
|
||||
$this->body = json_decode($zone->getBody());
|
||||
return $this->body;
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,12 @@
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class DNS implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -19,13 +22,28 @@ class DNS implements API
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||
*
|
||||
* @param string $zoneID
|
||||
* @param string $type
|
||||
* @param string $name
|
||||
* @param string $content
|
||||
* @param int $ttl
|
||||
* @param bool $proxied
|
||||
* @param string $priority
|
||||
* @param array $data
|
||||
* @return bool
|
||||
*/
|
||||
public function addRecord(
|
||||
string $zoneID,
|
||||
string $type,
|
||||
string $name,
|
||||
string $content,
|
||||
int $ttl = 0,
|
||||
bool $proxied = true
|
||||
bool $proxied = true,
|
||||
string $priority = '',
|
||||
array $data = []
|
||||
): bool {
|
||||
$options = [
|
||||
'type' => $type,
|
||||
@@ -38,11 +56,19 @@ class DNS implements API
|
||||
$options['ttl'] = $ttl;
|
||||
}
|
||||
|
||||
$user = $this->adapter->post('zones/' . $zoneID . '/dns_records', [], $options);
|
||||
if (!empty($priority)) {
|
||||
$options['priority'] = (int)$priority;
|
||||
}
|
||||
|
||||
if (!empty($data)) {
|
||||
$options['data'] = $data;
|
||||
}
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->post('zones/' . $zoneID . '/dns_records', $options);
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -51,14 +77,14 @@ class DNS implements API
|
||||
|
||||
public function listRecords(
|
||||
string $zoneID,
|
||||
string $type = "",
|
||||
string $name = "",
|
||||
string $content = "",
|
||||
string $type = '',
|
||||
string $name = '',
|
||||
string $content = '',
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = "",
|
||||
string $direction = "",
|
||||
string $match = "all"
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
string $match = 'all'
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
@@ -86,36 +112,33 @@ class DNS implements API
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/dns_records', $query, []);
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/dns_records', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
$result = new \stdClass();
|
||||
$result->result = $body->result;
|
||||
$result->result_info = $body->result_info;
|
||||
|
||||
return $result;
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function getRecordDetails(string $zoneID, string $recordID): \stdClass
|
||||
{
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/dns_records/' . $recordID, [], []);
|
||||
$body = json_decode($user->getBody());
|
||||
return $body->result;
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/dns_records/' . $recordID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updateRecordDetails(string $zoneID, string $recordID, array $details): \stdClass
|
||||
{
|
||||
$response = $this->adapter->put('zones/' . $zoneID . '/dns_records/' . $recordID, [], $details);
|
||||
return json_decode($response->getBody());
|
||||
$response = $this->adapter->put('zones/' . $zoneID . '/dns_records/' . $recordID, $details);
|
||||
$this->body = json_decode($response->getBody());
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function deleteRecord(string $zoneID, string $recordID): bool
|
||||
{
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/dns_records/' . $recordID, [], []);
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/dns_records/' . $recordID);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,9 +9,12 @@
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class IPs implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -21,9 +24,9 @@ class IPs implements API
|
||||
|
||||
public function listIPs(): \stdClass
|
||||
{
|
||||
$ips = $this->adapter->get('ips', [], []);
|
||||
$body = json_decode($ips->getBody());
|
||||
$ips = $this->adapter->get('ips');
|
||||
$this->body = json_decode($ips->getBody());
|
||||
|
||||
return $body->result;
|
||||
return $this->body->result;
|
||||
}
|
||||
}
|
||||
|
||||
83
src/Endpoints/Membership.php
Normal file
83
src/Endpoints/Membership.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
/* A list of memberships of accounts this user can access */
|
||||
|
||||
class Membership implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
|
||||
public function listMemberships(
|
||||
string $name = '',
|
||||
string $status = '',
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = '',
|
||||
string $direction = ''
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage
|
||||
];
|
||||
|
||||
if (!empty($name)) {
|
||||
$query['account.name'] = $name;
|
||||
}
|
||||
|
||||
if (!empty($status) && in_array($status, ['accepted', 'pending', 'rejected'], true)) {
|
||||
$query['status'] = $status;
|
||||
}
|
||||
|
||||
if (!empty($order) && in_array($order, ['id', 'account.name', 'status'], true)) {
|
||||
$query['order'] = $order;
|
||||
}
|
||||
|
||||
if (!empty($direction) && in_array($direction, ['asc', 'desc'], true)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$memberships = $this->adapter->get('memberships', $query);
|
||||
$this->body = json_decode($memberships->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function getMembershipDetails(string $membershipId): \stdClass
|
||||
{
|
||||
$membership = $this->adapter->get(sprintf('memberships/%s', $membershipId));
|
||||
$this->body = json_decode($membership->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updateMembershipStatus(string $membershipId, string $status): \stdClass
|
||||
{
|
||||
$response = $this->adapter->put(sprintf('memberships/%s', $membershipId), ['status' => $status]);
|
||||
$this->body = json_decode($response->getBody());
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function deleteMembership(string $membershipId): bool
|
||||
{
|
||||
$response = $this->adapter->delete(sprintf('memberships/%s', $membershipId));
|
||||
|
||||
$this->body = json_decode($response->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -11,9 +11,12 @@ namespace Cloudflare\API\Endpoints;
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Configurations\PageRulesActions;
|
||||
use Cloudflare\API\Configurations\PageRulesTargets;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class PageRules implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -21,6 +24,16 @@ class PageRules implements API
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||
*
|
||||
* @param string $zoneID
|
||||
* @param PageRulesTargets $target
|
||||
* @param PageRulesActions $actions
|
||||
* @param bool $active
|
||||
* @param int|null $priority
|
||||
* @return bool
|
||||
*/
|
||||
public function createPageRule(
|
||||
string $zoneID,
|
||||
PageRulesTargets $target,
|
||||
@@ -42,11 +55,11 @@ class PageRules implements API
|
||||
}
|
||||
|
||||
|
||||
$query = $this->adapter->post('zones/' . $zoneID . '/pagerules', [], $options);
|
||||
$query = $this->adapter->post('zones/' . $zoneID . '/pagerules', $options);
|
||||
|
||||
$body = json_decode($query->getBody());
|
||||
$this->body = json_decode($query->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -60,19 +73,19 @@ class PageRules implements API
|
||||
string $direction = null,
|
||||
string $match = null
|
||||
): array {
|
||||
if (is_null($status) && !in_array($status, ['active', 'disabled'])) {
|
||||
if ($status === null && !in_array($status, ['active', 'disabled'])) {
|
||||
throw new EndpointException('Page Rules can only be listed by status of active or disabled.');
|
||||
}
|
||||
|
||||
if (is_null($order) && !in_array($order, ['status', 'priority'])) {
|
||||
if ($order === null && !in_array($order, ['status', 'priority'])) {
|
||||
throw new EndpointException('Page Rules can only be ordered by status or priority.');
|
||||
}
|
||||
|
||||
if (is_null($direction) && !in_array($direction, ['asc', 'desc'])) {
|
||||
if ($direction === null && !in_array($direction, ['asc', 'desc'])) {
|
||||
throw new EndpointException('Direction of Page Rule ordering can only be asc or desc.');
|
||||
}
|
||||
|
||||
if (is_null($match) && !in_array($match, ['all', 'any'])) {
|
||||
if ($match === null && !in_array($match, ['all', 'any'])) {
|
||||
throw new EndpointException('Match can only be any or all.');
|
||||
}
|
||||
|
||||
@@ -83,17 +96,17 @@ class PageRules implements API
|
||||
'match' => $match
|
||||
];
|
||||
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules', $query, []);
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $body->result;
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function getPageRuleDetails(string $zoneID, string $ruleID): \stdClass
|
||||
{
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules/' . $ruleID, [], []);
|
||||
$body = json_decode($user->getBody());
|
||||
return $body->result;
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules/' . $ruleID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updatePageRule(
|
||||
@@ -105,7 +118,7 @@ class PageRules implements API
|
||||
): bool {
|
||||
$options = [];
|
||||
|
||||
if ($active !== null) {
|
||||
if ($target !== null) {
|
||||
$options['targets'] = $target->getArray();
|
||||
}
|
||||
|
||||
@@ -122,11 +135,11 @@ class PageRules implements API
|
||||
}
|
||||
|
||||
|
||||
$query = $this->adapter->patch('zones/' . $zoneID . '/pagerules', [], $options);
|
||||
$query = $this->adapter->patch('zones/' . $zoneID . '/pagerules', $options);
|
||||
|
||||
$body = json_decode($query->getBody());
|
||||
$this->body = json_decode($query->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -135,11 +148,11 @@ class PageRules implements API
|
||||
|
||||
public function deletePageRule(string $zoneID, string $ruleID): bool
|
||||
{
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/pagerules/' . $ruleID, [], []);
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/pagerules/' . $ruleID);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
102
src/Endpoints/Railgun.php
Normal file
102
src/Endpoints/Railgun.php
Normal file
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 23/10/2017
|
||||
* Time: 11:15
|
||||
*/
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class Railgun implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
public function create(
|
||||
string $name
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'name' => $name,
|
||||
];
|
||||
|
||||
$user = $this->adapter->post('railguns', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
public function list(
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $direction = ''
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage
|
||||
];
|
||||
|
||||
if (!empty($direction)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$user = $this->adapter->get('railguns', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function get(
|
||||
string $railgunID
|
||||
): \stdClass {
|
||||
$user = $this->adapter->get('railguns/' . $railgunID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function getZones(
|
||||
string $railgunID
|
||||
): \stdClass {
|
||||
$user = $this->adapter->get('railguns/' . $railgunID . '/zones');
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function update(
|
||||
string $railgunID,
|
||||
bool $status
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'enabled' => $status
|
||||
];
|
||||
|
||||
$user = $this->adapter->patch('railguns/' . $railgunID, $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function delete(
|
||||
string $railgunID
|
||||
): bool {
|
||||
$user = $this->adapter->delete('railguns/' . $railgunID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
131
src/Endpoints/TLS.php
Normal file
131
src/Endpoints/TLS.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Jurgen Coetsiers
|
||||
* Date: 21/10/2018
|
||||
* Time: 09:10
|
||||
*/
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
|
||||
class TLS implements API
|
||||
{
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
public function enableTLS13($zoneID)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/tls_1_3',
|
||||
['value' => 'on']
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function disableTLS13($zoneID)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/tls_1_3',
|
||||
['value' => 'off']
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public function changeMinimumTLSVersion($zoneID, $minimumVersion)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/min_tls_version',
|
||||
[
|
||||
'value' => $minimumVersion,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getHTTPSRedirectSetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/always_use_https'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getHTTPSRewritesSetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/automatic_https_rewrites'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateHTTPSRedirectStatus($zoneID, $value)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/always_use_https',
|
||||
[
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateHTTPSRewritesStatus($zoneID, $value)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/automatic_https_rewrites',
|
||||
[
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,14 @@
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Configurations\Configurations;
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class UARules implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -29,21 +33,17 @@ class UARules implements API
|
||||
'per_page' => $perPage
|
||||
];
|
||||
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules', $query, []);
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
$result = new \stdClass();
|
||||
$result->result = $body->result;
|
||||
$result->result_info = $body->result_info;
|
||||
|
||||
return $result;
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function createRule(
|
||||
string $zoneID,
|
||||
string $mode,
|
||||
\Cloudflare\API\Configurations\Configurations $configuration,
|
||||
string $id = null,
|
||||
Configurations $configuration,
|
||||
string $ruleID = null,
|
||||
string $description = null
|
||||
): bool {
|
||||
$options = [
|
||||
@@ -51,19 +51,19 @@ class UARules implements API
|
||||
'configurations' => $configuration->getArray()
|
||||
];
|
||||
|
||||
if ($id !== null) {
|
||||
$options['id'] = $id;
|
||||
if ($ruleID !== null) {
|
||||
$options['id'] = $ruleID;
|
||||
}
|
||||
|
||||
if ($description !== null) {
|
||||
$options['description'] = $description;
|
||||
}
|
||||
|
||||
$user = $this->adapter->post('zones/' . $zoneID . '/firewall/ua_rules', [], $options);
|
||||
$user = $this->adapter->post('zones/' . $zoneID . '/firewall/ua_rules', $options);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -72,9 +72,9 @@ class UARules implements API
|
||||
|
||||
public function getRuleDetails(string $zoneID, string $blockID): \stdClass
|
||||
{
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules/' . $blockID, []);
|
||||
$body = json_decode($user->getBody());
|
||||
return $body->result;
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules/' . $blockID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updateRule(
|
||||
@@ -94,11 +94,11 @@ class UARules implements API
|
||||
$options['description'] = $description;
|
||||
}
|
||||
|
||||
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, [], $options);
|
||||
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, $options);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -107,11 +107,11 @@ class UARules implements API
|
||||
|
||||
public function deleteRule(string $zoneID, string $ruleID): bool
|
||||
{
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, [], []);
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,12 @@
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class User implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -20,24 +23,25 @@ class User implements API
|
||||
|
||||
public function getUserDetails(): \stdClass
|
||||
{
|
||||
$user = $this->adapter->get('user', [], []);
|
||||
$body = json_decode($user->getBody());
|
||||
return $body->result;
|
||||
$user = $this->adapter->get('user');
|
||||
$this->body = json_decode($user->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function getUserID(): string
|
||||
{
|
||||
return ($this->getUserDetails())->id;
|
||||
return $this->getUserDetails()->id;
|
||||
}
|
||||
|
||||
public function getUserEmail(): string
|
||||
{
|
||||
return ($this->getUserDetails())->email;
|
||||
return $this->getUserDetails()->email;
|
||||
}
|
||||
|
||||
public function updateUserDetails(array $details): \stdClass
|
||||
{
|
||||
$response = $this->adapter->patch("user", [], $details);
|
||||
return json_decode($response->getBody());
|
||||
$response = $this->adapter->patch('user', $details);
|
||||
$this->body = json_decode($response->getBody());
|
||||
return $this->body;
|
||||
}
|
||||
}
|
||||
|
||||
183
src/Endpoints/WAF.php
Normal file
183
src/Endpoints/WAF.php
Normal file
@@ -0,0 +1,183 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 23/10/2017
|
||||
* Time: 11:17
|
||||
*/
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class WAF implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
public function getPackages(
|
||||
string $zoneID,
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
string $match = 'all'
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage,
|
||||
'match' => $match
|
||||
];
|
||||
|
||||
if (!empty($order)) {
|
||||
$query['order'] = $order;
|
||||
}
|
||||
|
||||
if (!empty($direction)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
|
||||
public function getPackageInfo(
|
||||
string $zoneID,
|
||||
string $packageID
|
||||
): \stdClass {
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function getRules(
|
||||
string $zoneID,
|
||||
string $packageID,
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
string $match = 'all'
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage,
|
||||
'match' => $match
|
||||
];
|
||||
|
||||
if (!empty($order)) {
|
||||
$query['order'] = $order;
|
||||
}
|
||||
|
||||
if (!empty($direction)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function getRuleInfo(
|
||||
string $zoneID,
|
||||
string $packageID,
|
||||
string $ruleID
|
||||
): \stdClass {
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updateRule(
|
||||
string $zoneID,
|
||||
string $packageID,
|
||||
string $ruleID,
|
||||
string $status
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'mode' => $status,
|
||||
];
|
||||
|
||||
$user = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
|
||||
$query
|
||||
);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function getGroups(
|
||||
string $zoneID,
|
||||
string $packageID,
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
string $match = 'all'
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
'per_page' => $perPage,
|
||||
'match' => $match
|
||||
];
|
||||
|
||||
if (!empty($order)) {
|
||||
$query['order'] = $order;
|
||||
}
|
||||
|
||||
if (!empty($direction)) {
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$user = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups',
|
||||
$query
|
||||
);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function getGroupInfo(
|
||||
string $zoneID,
|
||||
string $packageID,
|
||||
string $groupID
|
||||
): \stdClass {
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updateGroup(
|
||||
string $zoneID,
|
||||
string $packageID,
|
||||
string $groupID,
|
||||
string $status
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'mode' => $status
|
||||
];
|
||||
|
||||
$user = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
|
||||
$query
|
||||
);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return $this->body->result;
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,12 @@
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class ZoneLockdown implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -29,21 +32,17 @@ class ZoneLockdown implements API
|
||||
'per_page' => $perPage
|
||||
];
|
||||
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns', $query, []);
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
$result = new \stdClass();
|
||||
$result->result = $body->result;
|
||||
$result->result_info = $body->result_info;
|
||||
|
||||
return $result;
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function createLockdown(
|
||||
string $zoneID,
|
||||
array $urls,
|
||||
\Cloudflare\API\Configurations\ZoneLockdown $configuration,
|
||||
string $id = null,
|
||||
string $lockdownID = null,
|
||||
string $description = null
|
||||
): bool {
|
||||
$options = [
|
||||
@@ -51,19 +50,19 @@ class ZoneLockdown implements API
|
||||
'configurations' => $configuration->getArray()
|
||||
];
|
||||
|
||||
if ($id !== null) {
|
||||
$options['id'] = $id;
|
||||
if ($lockdownID !== null) {
|
||||
$options['id'] = $lockdownID;
|
||||
}
|
||||
|
||||
if ($description !== null) {
|
||||
$options['description'] = $description;
|
||||
}
|
||||
|
||||
$user = $this->adapter->post('zones/' . $zoneID . '/firewall/lockdowns', [], $options);
|
||||
$user = $this->adapter->post('zones/' . $zoneID . '/firewall/lockdowns', $options);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -72,9 +71,9 @@ class ZoneLockdown implements API
|
||||
|
||||
public function getLockdownDetails(string $zoneID, string $lockdownID): \stdClass
|
||||
{
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], []);
|
||||
$body = json_decode($user->getBody());
|
||||
return $body->result;
|
||||
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID);
|
||||
$this->body = json_decode($user->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function updateLockdown(
|
||||
@@ -94,11 +93,11 @@ class ZoneLockdown implements API
|
||||
$options['description'] = $description;
|
||||
}
|
||||
|
||||
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], $options);
|
||||
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, $options);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -107,11 +106,11 @@ class ZoneLockdown implements API
|
||||
|
||||
public function deleteLockdown(string $zoneID, string $lockdownID): bool
|
||||
{
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], []);
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
180
src/Endpoints/ZoneSettings.php
Normal file
180
src/Endpoints/ZoneSettings.php
Normal file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: paul.adams
|
||||
* Date: 2019-02-22
|
||||
* Time: 23:28
|
||||
*/
|
||||
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
|
||||
class ZoneSettings implements API
|
||||
{
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
public function getMinifySetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/minify'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getRocketLoaderSetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/rocket_loader'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getAlwaysOnlineSetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/always_online'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getEmailObfuscationSetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/email_obfuscation'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getHotlinkProtectionSetting($zoneID)
|
||||
{
|
||||
$return = $this->adapter->get(
|
||||
'zones/' . $zoneID . '/settings/hotlink_protection'
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return $body->result->value;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateMinifySetting($zoneID, $html, $css, $javascript)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/minify',
|
||||
[
|
||||
'value' => [
|
||||
'html' => $html,
|
||||
'css' => $css,
|
||||
'js' => $javascript,
|
||||
],
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateRocketLoaderSetting($zoneID, $value)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/rocket_loader',
|
||||
[
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateAlwaysOnlineSetting($zoneID, $value)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/always_online',
|
||||
[
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateEmailObfuscationSetting($zoneID, $value)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/email_obfuscation',
|
||||
[
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function updateHotlinkProtectionSetting($zoneID, $value)
|
||||
{
|
||||
$return = $this->adapter->patch(
|
||||
'zones/' . $zoneID . '/settings/hotlink_protection',
|
||||
[
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
$body = json_decode($return->getBody());
|
||||
|
||||
if ($body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,12 @@
|
||||
namespace Cloudflare\API\Endpoints;
|
||||
|
||||
use Cloudflare\API\Adapter\Adapter;
|
||||
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||
|
||||
class Zones implements API
|
||||
{
|
||||
use BodyAccessorTrait;
|
||||
|
||||
private $adapter;
|
||||
|
||||
public function __construct(Adapter $adapter)
|
||||
@@ -19,44 +22,59 @@ class Zones implements API
|
||||
$this->adapter = $adapter;
|
||||
}
|
||||
|
||||
public function addZone(string $name, bool $jumpstart = false, string $organizationID = ''): \stdClass
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||
*
|
||||
* @param string $name
|
||||
* @param bool $jumpStart
|
||||
* @param string $organizationID
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function addZone(string $name, bool $jumpStart = false, string $organizationID = ''): \stdClass
|
||||
{
|
||||
$options = [
|
||||
'name' => $name,
|
||||
'jumpstart' => $jumpstart
|
||||
'jump_start' => $jumpStart
|
||||
];
|
||||
|
||||
if (!empty($organizationID)) {
|
||||
$organization = new \stdClass();
|
||||
$organization->id = $organizationID;
|
||||
$options["organization"] = $organization;
|
||||
$options['organization'] = ['id' => $organizationID];
|
||||
}
|
||||
|
||||
$user = $this->adapter->post('zones', [], $options);
|
||||
$body = json_decode($user->getBody());
|
||||
return $body->result;
|
||||
$user = $this->adapter->post('zones', $options);
|
||||
$this->body = json_decode($user->getBody());
|
||||
return $this->body->result;
|
||||
}
|
||||
|
||||
public function activationCheck(string $zoneID): bool
|
||||
{
|
||||
$user = $this->adapter->put('zones/' . $zoneID . '/activation_check', [], []);
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->put('zones/' . $zoneID . '/activation_check');
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getZoneById(
|
||||
string $zoneId
|
||||
): \stdClass {
|
||||
$user = $this->adapter->get('zones/' . $zoneId);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
return (object)['result' => $this->body->result];
|
||||
}
|
||||
|
||||
public function listZones(
|
||||
string $name = "",
|
||||
string $status = "",
|
||||
string $name = '',
|
||||
string $status = '',
|
||||
int $page = 1,
|
||||
int $perPage = 20,
|
||||
string $order = "",
|
||||
string $direction = "",
|
||||
string $match = "all"
|
||||
string $order = '',
|
||||
string $direction = '',
|
||||
string $match = 'all'
|
||||
): \stdClass {
|
||||
$query = [
|
||||
'page' => $page,
|
||||
@@ -80,27 +98,94 @@ class Zones implements API
|
||||
$query['direction'] = $direction;
|
||||
}
|
||||
|
||||
$user = $this->adapter->get('zones', $query, []);
|
||||
$body = json_decode($user->getBody());
|
||||
$user = $this->adapter->get('zones', $query);
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
$result = new \stdClass();
|
||||
$result->result = $body->result;
|
||||
$result->result_info = $body->result_info;
|
||||
|
||||
return $result;
|
||||
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||
}
|
||||
|
||||
public function getZoneID(string $name = ""): string
|
||||
public function getZoneID(string $name = ''): string
|
||||
{
|
||||
$zones = $this->listZones($name);
|
||||
|
||||
if (sizeof($zones->result) < 1) {
|
||||
throw new EndpointException("Could not find zones with specified name.");
|
||||
if (count($zones->result) < 1) {
|
||||
throw new EndpointException('Could not find zones with specified name.');
|
||||
}
|
||||
|
||||
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' => var_export($continuous, true)]);
|
||||
|
||||
$this->body = $response->getBody();
|
||||
|
||||
return json_decode($this->body)->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']);
|
||||
|
||||
$this->body = json_decode($response->getBody());
|
||||
|
||||
if ($this->body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return caching level settings
|
||||
* @param string $zoneID
|
||||
* @return string
|
||||
*/
|
||||
public function getCachingLevel(string $zoneID): string
|
||||
{
|
||||
$response = $this->adapter->get('zones/' . $zoneID . '/settings/cache_level');
|
||||
|
||||
$this->body = json_decode($response->getBody());
|
||||
|
||||
return $this->body->result->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change caching level settings
|
||||
* @param string $zoneID
|
||||
* @param string $level (aggressive | basic | simplified)
|
||||
* @return bool
|
||||
*/
|
||||
public function setCachingLevel(string $zoneID, string $level = 'aggressive'): bool
|
||||
{
|
||||
$response = $this->adapter->patch('zones/' . $zoneID . '/settings/cache_level', ['value' => $level]);
|
||||
|
||||
$this->body = json_decode($response->getBody());
|
||||
|
||||
if ($this->body->success) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Purge Everything
|
||||
* @param string $zoneID
|
||||
@@ -108,33 +193,41 @@ class Zones implements API
|
||||
*/
|
||||
public function cachePurgeEverything(string $zoneID): bool
|
||||
{
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', [], ["purge_everything" => true]);
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', ['purge_everything' => true]);
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function cachePurge(string $zoneID, array $files = [], array $tags = []): bool
|
||||
public function cachePurge(string $zoneID, array $files = null, array $tags = null, array $hosts = null): bool
|
||||
{
|
||||
if (empty($files) && empty($tags)) {
|
||||
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 = [
|
||||
'files' => $files,
|
||||
'tags' => $tags
|
||||
];
|
||||
$options = [];
|
||||
if (!is_null($files)) {
|
||||
$options['files'] = $files;
|
||||
}
|
||||
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', [], $options);
|
||||
if (!is_null($tags)) {
|
||||
$options['tags'] = $tags;
|
||||
}
|
||||
|
||||
$body = json_decode($user->getBody());
|
||||
if (!is_null($hosts)) {
|
||||
$options['hosts'] = $hosts;
|
||||
}
|
||||
|
||||
if (isset($body->result->id)) {
|
||||
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', $options);
|
||||
|
||||
$this->body = json_decode($user->getBody());
|
||||
|
||||
if (isset($this->body->result->id)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
13
src/Traits/BodyAccessorTrait.php
Normal file
13
src/Traits/BodyAccessorTrait.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Cloudflare\API\Traits;
|
||||
|
||||
trait BodyAccessorTrait
|
||||
{
|
||||
private $body;
|
||||
|
||||
public function getBody()
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
}
|
||||
@@ -29,66 +29,64 @@ class GuzzleTest extends TestCase
|
||||
$response = $this->client->get('https://httpbin.org/get');
|
||||
|
||||
$headers = $response->getHeaders();
|
||||
$this->assertEquals("application/json", $headers["Content-Type"][0]);
|
||||
$this->assertEquals('application/json', $headers['Content-Type'][0]);
|
||||
|
||||
$body = json_decode($response->getBody());
|
||||
$this->assertEquals("Test", $body->headers->{"X-Testing"});
|
||||
$this->assertEquals('Test', $body->headers->{'X-Testing'});
|
||||
|
||||
$response = $this->client->get('https://httpbin.org/get', [], ['X-Another-Test' => 'Test2']);
|
||||
$body = json_decode($response->getBody());
|
||||
$this->assertEquals("Test2", $body->headers->{"X-Another-Test"});
|
||||
$this->assertEquals('Test2', $body->headers->{'X-Another-Test'});
|
||||
}
|
||||
|
||||
public function testPost()
|
||||
{
|
||||
$response = $this->client->post('https://httpbin.org/post', [], ['X-Post-Test' => 'Testing a POST request.']);
|
||||
$response = $this->client->post('https://httpbin.org/post', ['X-Post-Test' => 'Testing a POST request.']);
|
||||
|
||||
$headers = $response->getHeaders();
|
||||
$this->assertEquals("application/json", $headers["Content-Type"][0]);
|
||||
$this->assertEquals('application/json', $headers['Content-Type'][0]);
|
||||
|
||||
$body = json_decode($response->getBody());
|
||||
$this->assertEquals("Testing a POST request.", $body->json->{"X-Post-Test"});
|
||||
$this->assertEquals('Testing a POST request.', $body->json->{'X-Post-Test'});
|
||||
}
|
||||
|
||||
public function testPut()
|
||||
{
|
||||
$response = $this->client->put('https://httpbin.org/put', [], ['X-Put-Test' => 'Testing a PUT request.']);
|
||||
$response = $this->client->put('https://httpbin.org/put', ['X-Put-Test' => 'Testing a PUT request.']);
|
||||
|
||||
$headers = $response->getHeaders();
|
||||
$this->assertEquals("application/json", $headers["Content-Type"][0]);
|
||||
$this->assertEquals('application/json', $headers['Content-Type'][0]);
|
||||
|
||||
$body = json_decode($response->getBody());
|
||||
$this->assertEquals("Testing a PUT request.", $body->json->{"X-Put-Test"});
|
||||
$this->assertEquals('Testing a PUT request.', $body->json->{'X-Put-Test'});
|
||||
}
|
||||
|
||||
public function testPatch()
|
||||
{
|
||||
$response = $this->client->patch(
|
||||
'https://httpbin.org/patch',
|
||||
[],
|
||||
['X-Patch-Test' => 'Testing a PATCH request.']
|
||||
);
|
||||
|
||||
$headers = $response->getHeaders();
|
||||
$this->assertEquals("application/json", $headers["Content-Type"][0]);
|
||||
$this->assertEquals('application/json', $headers['Content-Type'][0]);
|
||||
|
||||
$body = json_decode($response->getBody());
|
||||
$this->assertEquals("Testing a PATCH request.", $body->json->{"X-Patch-Test"});
|
||||
$this->assertEquals('Testing a PATCH request.', $body->json->{'X-Patch-Test'});
|
||||
}
|
||||
|
||||
public function testDelete()
|
||||
{
|
||||
$response = $this->client->delete(
|
||||
'https://httpbin.org/delete',
|
||||
[],
|
||||
['X-Delete-Test' => 'Testing a DELETE request.']
|
||||
);
|
||||
|
||||
$headers = $response->getHeaders();
|
||||
$this->assertEquals("application/json", $headers["Content-Type"][0]);
|
||||
$this->assertEquals('application/json', $headers['Content-Type'][0]);
|
||||
|
||||
$body = json_decode($response->getBody());
|
||||
$this->assertEquals("Testing a DELETE request.", $body->json->{"X-Delete-Test"});
|
||||
$this->assertEquals('Testing a DELETE request.', $body->json->{'X-Delete-Test'});
|
||||
}
|
||||
|
||||
public function testErrors()
|
||||
@@ -133,6 +131,6 @@ class GuzzleTest extends TestCase
|
||||
public function testNotFound()
|
||||
{
|
||||
$this->expectException(\GuzzleHttp\Exception\RequestException::class);
|
||||
$response = $this->client->get('https://httpbin.org/status/404');
|
||||
$this->client->get('https://httpbin.org/status/404');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,6 @@ class APIKeyTest extends TestCase
|
||||
$this->assertEquals('example@example.com', $headers['X-Auth-Email']);
|
||||
$this->assertEquals('1234567893feefc5f0q5000bfo0c38d90bbeb', $headers['X-Auth-Key']);
|
||||
|
||||
$this->assertEquals(2, sizeof($headers));
|
||||
$this->assertCount(2, $headers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
* Time: 20:08
|
||||
*/
|
||||
|
||||
use Cloudflare\API\Auth\None;
|
||||
|
||||
class NoneTest extends TestCase
|
||||
{
|
||||
public function testGetHeaders()
|
||||
|
||||
@@ -9,7 +9,7 @@ class UserServiceKeyTest extends TestCase
|
||||
{
|
||||
public function testGetHeaders()
|
||||
{
|
||||
$auth = new \Cloudflare\API\Auth\UserServiceKey("v1.0-e24fd090c02efcfecb4de8f4ff246fd5c75b48946fdf0ce26c59f91d0d90797b-cfa33fe60e8e34073c149323454383fc9005d25c9b4c502c2f063457ef65322eade065975001a0b4b4c591c5e1bd36a6e8f7e2d4fa8a9ec01c64c041e99530c2-07b9efe0acd78c82c8d9c690aacb8656d81c369246d7f996a205fe3c18e9254a");
|
||||
$auth = new \Cloudflare\API\Auth\UserServiceKey('v1.0-e24fd090c02efcfecb4de8f4ff246fd5c75b48946fdf0ce26c59f91d0d90797b-cfa33fe60e8e34073c149323454383fc9005d25c9b4c502c2f063457ef65322eade065975001a0b4b4c591c5e1bd36a6e8f7e2d4fa8a9ec01c64c041e99530c2-07b9efe0acd78c82c8d9c690aacb8656d81c369246d7f996a205fe3c18e9254a');
|
||||
$headers = $auth->getHeaders();
|
||||
|
||||
$this->assertArrayHasKey('X-Auth-User-Service-Key', $headers);
|
||||
@@ -19,6 +19,6 @@ class UserServiceKeyTest extends TestCase
|
||||
$headers['X-Auth-User-Service-Key']
|
||||
);
|
||||
|
||||
$this->assertEquals(1, sizeof($headers));
|
||||
$this->assertCount(1, $headers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,14 +14,14 @@ class ConfigurationsUARulesTest extends TestCase
|
||||
$configuration->addUA('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4');
|
||||
|
||||
$array = $configuration->getArray();
|
||||
$this->assertEquals(1, sizeof($array));
|
||||
$this->assertCount(1, $array);
|
||||
|
||||
$this->assertObjectHasAttribute('target', $array[0]);
|
||||
$this->assertEquals('ua', $array[0]->target);
|
||||
$this->assertObjectHasAttribute('value', $array[0]);
|
||||
$this->assertArrayHasKey('target', $array[0]);
|
||||
$this->assertEquals('ua', $array[0]['target']);
|
||||
$this->assertArrayHasKey('value', $array[0]);
|
||||
$this->assertEquals(
|
||||
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4',
|
||||
$array[0]->value
|
||||
$array[0]['value']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
34
tests/Configurations/ConfigurationsZoneLockdownTest.php
Normal file
34
tests/Configurations/ConfigurationsZoneLockdownTest.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 05/09/2017
|
||||
* Time: 13:50
|
||||
*/
|
||||
class ConfigurationsZoneLockdownTest extends TestCase
|
||||
{
|
||||
public function testGetArray()
|
||||
{
|
||||
$configuration = new \Cloudflare\API\Configurations\ZoneLockdown();
|
||||
$configuration->addIP('1.2.3.4');
|
||||
|
||||
$array = $configuration->getArray();
|
||||
$this->assertCount(1, $array);
|
||||
|
||||
$this->assertArrayHasKey('target', $array[0]);
|
||||
$this->assertEquals('ip', $array[0]['target']);
|
||||
$this->assertArrayHasKey('value', $array[0]);
|
||||
$this->assertEquals('1.2.3.4', $array[0]['value']);
|
||||
|
||||
$configuration->addIPRange('1.2.3.4/24');
|
||||
|
||||
$array = $configuration->getArray();
|
||||
$this->assertCount(2, $array);
|
||||
|
||||
$this->assertArrayHasKey('target', $array[1]);
|
||||
$this->assertEquals('ip_range', $array[1]['target']);
|
||||
$this->assertArrayHasKey('value', $array[1]);
|
||||
$this->assertEquals('1.2.3.4/24', $array[1]['value']);
|
||||
}
|
||||
}
|
||||
21
tests/Configurations/PageRulesActionTest.php
Normal file
21
tests/Configurations/PageRulesActionTest.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
use Cloudflare\API\Configurations\PageRulesActions;
|
||||
|
||||
class PageRulesActionTest extends TestCase
|
||||
{
|
||||
public function testForwardingURLConfigurationIsApplied()
|
||||
{
|
||||
$identifier = 'forwarding_url';
|
||||
$statusCode = 301;
|
||||
$forwardingURL = 'https://www.example.org/';
|
||||
|
||||
$actions = new PageRulesActions();
|
||||
$actions->setForwardingURL($statusCode, $forwardingURL);
|
||||
$configuration = $actions->getArray();
|
||||
|
||||
$this->assertCount(1, $configuration);
|
||||
$this->assertEquals($identifier, $configuration[0]['id']);
|
||||
$this->assertEquals($statusCode, $configuration[0]['value']['status_code']);
|
||||
$this->assertEquals($forwardingURL, $configuration[0]['value']['url']);
|
||||
}
|
||||
}
|
||||
@@ -15,8 +15,8 @@ class PageRulesTargetTest extends TestCase
|
||||
$targets = new PageRulesTargets('junade.com/*');
|
||||
$array = $targets->getArray();
|
||||
|
||||
$this->assertEquals(1, sizeof($array));
|
||||
$this->assertEquals("junade.com/*", $array[0]->constraint->value);
|
||||
$this->assertEquals("matches", $array[0]->constraint->operator);
|
||||
$this->assertCount(1, $array);
|
||||
$this->assertEquals('junade.com/*', $array[0]['constraint']['value']);
|
||||
$this->assertEquals('matches', $array[0]['constraint']['operator']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 05/09/2017
|
||||
* Time: 13:50
|
||||
*/
|
||||
class ConfigurationZoneLockdownTest extends TestCase
|
||||
{
|
||||
public function testGetArray()
|
||||
{
|
||||
$configuration = new \Cloudflare\API\Configurations\ZoneLockdown();
|
||||
$configuration->addIP('1.2.3.4');
|
||||
|
||||
$array = $configuration->getArray();
|
||||
$this->assertEquals(1, sizeof($array));
|
||||
|
||||
$this->assertObjectHasAttribute('target', $array[0]);
|
||||
$this->assertEquals('ip', $array[0]->target);
|
||||
$this->assertObjectHasAttribute('value', $array[0]);
|
||||
$this->assertEquals('1.2.3.4', $array[0]->value);
|
||||
|
||||
$configuration->addIPRange('1.2.3.4/24');
|
||||
|
||||
$array = $configuration->getArray();
|
||||
$this->assertEquals(2, sizeof($array));
|
||||
|
||||
$this->assertObjectHasAttribute('target', $array[1]);
|
||||
$this->assertEquals('ip_range', $array[1]->target);
|
||||
$this->assertObjectHasAttribute('value', $array[1]);
|
||||
$this->assertEquals('1.2.3.4/24', $array[1]->value);
|
||||
}
|
||||
}
|
||||
112
tests/Endpoints/AccessRulesTest.php
Normal file
112
tests/Endpoints/AccessRulesTest.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
class AccessRulesTest extends TestCase
|
||||
{
|
||||
public function testListRules()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listAccessRules.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 50,
|
||||
'match' => 'all'
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\AccessRules($mock);
|
||||
$result = $zones->listRules('023e105f4ecef8ad9ca31a8372d0c353');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testCreateRule()
|
||||
{
|
||||
$config = new \Cloudflare\API\Configurations\AccessRules();
|
||||
$config->setIP('1.2.3.4');
|
||||
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createAccessRule.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('post')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules'),
|
||||
$this->equalTo([
|
||||
'mode' => 'challenge',
|
||||
'configuration' => $config->getArray(),
|
||||
'notes' => 'This rule is on because of an event that occured on date X',
|
||||
])
|
||||
);
|
||||
|
||||
$rules = new \Cloudflare\API\Endpoints\AccessRules($mock);
|
||||
$rules->createRule(
|
||||
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||
'challenge',
|
||||
$config,
|
||||
'This rule is on because of an event that occured on date X'
|
||||
);
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdateRule()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateAccessRule.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'),
|
||||
$this->equalTo([
|
||||
'mode' => 'challenge',
|
||||
'notes' => 'This rule is on because of an event that occured on date X',
|
||||
])
|
||||
);
|
||||
|
||||
$rules = new \Cloudflare\API\Endpoints\AccessRules($mock);
|
||||
$rules->updateRule(
|
||||
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||
'92f17202ed8bd63d69a66b86a49a8f6b',
|
||||
'challenge',
|
||||
'This rule is on because of an event that occured on date X'
|
||||
);
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testDeleteRule()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteAccessRule.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'),
|
||||
$this->equalTo([
|
||||
'cascade' => 'none'
|
||||
])
|
||||
);
|
||||
|
||||
$rules = new \Cloudflare\API\Endpoints\AccessRules($mock);
|
||||
$rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '92f17202ed8bd63d69a66b86a49a8f6b');
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
138
tests/Endpoints/CustomHostnamesTest.php
Normal file
138
tests/Endpoints/CustomHostnamesTest.php
Normal file
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 18/03/2018
|
||||
* Time: 22:23
|
||||
*/
|
||||
|
||||
use Cloudflare\API\Endpoints\CustomHostnames;
|
||||
|
||||
class CustomHostnamesTest extends TestCase
|
||||
{
|
||||
public function testAddHostname()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createCustomHostname.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('post')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames'),
|
||||
$this->equalTo([
|
||||
'hostname' => 'app.example.com',
|
||||
'ssl' => [
|
||||
'method' => 'http',
|
||||
'type' => 'dv'
|
||||
]
|
||||
])
|
||||
);
|
||||
|
||||
$hostname = new CustomHostnames($mock);
|
||||
$hostname->addHostname('023e105f4ecef8ad9ca31a8372d0c353', 'app.example.com', 'http', 'dv');
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $hostname->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testListHostnames()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listHostnames.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/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames'),
|
||||
$this->equalTo([
|
||||
'hostname' => 'app.example.com',
|
||||
'id' => '0d89c70d-ad9f-4843-b99f-6cc0252067e9',
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'order' => 'ssl',
|
||||
'direction' => 'desc',
|
||||
'ssl' => 0
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
||||
$result = $zones->listHostnames('023e105f4ecef8ad9ca31a8372d0c353', 'app.example.com', '0d89c70d-ad9f-4843-b99f-6cc0252067e9', 1, 20, 'ssl', 'desc', 0);
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testGetHostname()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getHostname.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/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9')
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
||||
$result = $zones->getHostname('023e105f4ecef8ad9ca31a8372d0c353', '0d89c70d-ad9f-4843-b99f-6cc0252067e9', '0d89c70d-ad9f-4843-b99f-6cc0252067e9');
|
||||
|
||||
$this->assertObjectHasAttribute('id', $result);
|
||||
$this->assertObjectHasAttribute('hostname', $result);
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdateHostname()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateHostname.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/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9'),
|
||||
$this->equalTo([
|
||||
'ssl' => [
|
||||
'method' => 'http',
|
||||
'type' => 'dv'
|
||||
]
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
||||
$result = $zones->updateHostname('023e105f4ecef8ad9ca31a8372d0c353', '0d89c70d-ad9f-4843-b99f-6cc0252067e9', 'http', 'dv');
|
||||
|
||||
$this->assertObjectHasAttribute('id', $result);
|
||||
$this->assertObjectHasAttribute('hostname', $result);
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testDeleteHostname()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteHostname.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/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9')
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
||||
$result = $zones->deleteHostname('023e105f4ecef8ad9ca31a8372d0c353', '0d89c70d-ad9f-4843-b99f-6cc0252067e9');
|
||||
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $result->id);
|
||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->id);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,6 @@ class DNSTest extends TestCase
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'type' => 'A',
|
||||
'name' => 'example.com',
|
||||
@@ -44,26 +43,27 @@ class DNSTest extends TestCase
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'type' => 'A',
|
||||
'name' => 'example.com',
|
||||
'content' => '127.0.0.1',
|
||||
'order' => 'type',
|
||||
'direction' => 'desc']),
|
||||
$this->equalTo([])
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'type' => 'A',
|
||||
'name' => 'example.com',
|
||||
'content' => '127.0.0.1',
|
||||
'order' => 'type',
|
||||
'direction' => 'desc',
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\DNS($mock);
|
||||
$result = $zones->listRecords("023e105f4ecef8ad9ca31a8372d0c353", "A", "example.com", "127.0.0.1", 1, 20, "type", "desc", "all");
|
||||
$result = $zones->listRecords('023e105f4ecef8ad9ca31a8372d0c353', 'A', 'example.com', '127.0.0.1', 1, 20, 'type', 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->result[0]->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testGetDNSRecordDetails()
|
||||
@@ -76,14 +76,14 @@ class DNSTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59')
|
||||
);
|
||||
|
||||
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
|
||||
$result = $dns->getRecordDetails("023e105f4ecef8ad9ca31a8372d0c353", "372e67954025e0ba6aaa6d586b9e0b59");
|
||||
$result = $dns->getRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdateDNSRecord()
|
||||
@@ -95,8 +95,8 @@ class DNSTest extends TestCase
|
||||
|
||||
$details = [
|
||||
'type' => 'A',
|
||||
'name' => "example.com",
|
||||
'content' => "1.2.3.4",
|
||||
'name' => 'example.com',
|
||||
'content' => '1.2.3.4',
|
||||
'ttl' => 120,
|
||||
'proxied' => false,
|
||||
];
|
||||
@@ -105,14 +105,14 @@ class DNSTest extends TestCase
|
||||
->method('put')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo($details)
|
||||
);
|
||||
|
||||
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
|
||||
$result = $dns->updateRecordDetails("023e105f4ecef8ad9ca31a8372d0c353", "372e67954025e0ba6aaa6d586b9e0b59", $details);
|
||||
$result = $dns->updateRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59', $details);
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
|
||||
|
||||
foreach ($details as $property => $value) {
|
||||
$this->assertEquals($result->result->{ $property }, $value);
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
* Time: 20:16
|
||||
*/
|
||||
|
||||
use Cloudflare\API\Endpoints\IPs;
|
||||
|
||||
class IPsTest extends TestCase
|
||||
{
|
||||
public function testListIPs()
|
||||
@@ -20,13 +18,14 @@ class IPsTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('ips'),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('ips')
|
||||
);
|
||||
|
||||
$ips = new \Cloudflare\API\Endpoints\IPs($mock);
|
||||
$ips = $ips->listIPs();
|
||||
$this->assertObjectHasAttribute("ipv4_cidrs", $ips);
|
||||
$this->assertObjectHasAttribute("ipv6_cidrs", $ips);
|
||||
$ipsMock = new \Cloudflare\API\Endpoints\IPs($mock);
|
||||
$ips = $ipsMock->listIPs();
|
||||
$this->assertObjectHasAttribute('ipv4_cidrs', $ips);
|
||||
$this->assertObjectHasAttribute('ipv6_cidrs', $ips);
|
||||
$this->assertObjectHasAttribute('ipv4_cidrs', $ipsMock->getBody()->result);
|
||||
$this->assertObjectHasAttribute('ipv6_cidrs', $ipsMock->getBody()->result);
|
||||
}
|
||||
}
|
||||
|
||||
93
tests/Endpoints/MembershipTest.php
Normal file
93
tests/Endpoints/MembershipTest.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
|
||||
class MembershipTest extends TestCase
|
||||
{
|
||||
public function testListMemberships()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listMemberships.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('get')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('memberships'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'account.name' => 'Demo Account',
|
||||
'status' => 'accepted',
|
||||
'order' => 'status',
|
||||
'direction' => 'desc',
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Membership($mock);
|
||||
$result = $zones->listMemberships('Demo Account', 'accepted', 1, 20, 'status', 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testGetMembershipDetails()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getMembershipDetails.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('get')->willReturn($response);
|
||||
|
||||
$membership = new \Cloudflare\API\Endpoints\Membership($mock);
|
||||
$details = $membership->getMembershipDetails('4536bcfad5faccb111b47003c79917fa');
|
||||
|
||||
$this->assertObjectHasAttribute('id', $details);
|
||||
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $details->id);
|
||||
$this->assertObjectHasAttribute('code', $details);
|
||||
$this->assertEquals('05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0', $details->code);
|
||||
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $membership->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdateMembershipDetails()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateMembershipStatus.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('put')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('put')
|
||||
->with(
|
||||
$this->equalTo('memberships/4536bcfad5faccb111b47003c79917fa'),
|
||||
$this->equalTo([
|
||||
'status' => 'accepted'
|
||||
])
|
||||
);
|
||||
|
||||
$membership = new \Cloudflare\API\Endpoints\Membership($mock);
|
||||
$membership->updateMembershipStatus('4536bcfad5faccb111b47003c79917fa', 'accepted');
|
||||
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $membership->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testDeleteMembership()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteMembership.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('delete')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('delete')
|
||||
->with($this->equalTo('memberships/4536bcfad5faccb111b47003c79917fa'));
|
||||
|
||||
$membership = new \Cloudflare\API\Endpoints\Membership($mock);
|
||||
|
||||
$membership->deleteMembership('4536bcfad5faccb111b47003c79917fa');
|
||||
|
||||
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $membership->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,6 @@
|
||||
* Time: 19:25
|
||||
*/
|
||||
|
||||
use Cloudflare\API\Adapter\PageRules;
|
||||
|
||||
class PageRulesTest extends TestCase
|
||||
{
|
||||
public function testCreatePageRule()
|
||||
@@ -25,7 +23,6 @@ class PageRulesTest extends TestCase
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'targets' => $target->getArray(),
|
||||
'actions' => $action->getArray(),
|
||||
@@ -34,10 +31,11 @@ class PageRulesTest extends TestCase
|
||||
])
|
||||
);
|
||||
|
||||
$pr = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$result = $pr->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
|
||||
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$result = $pageRules->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testListPageRules()
|
||||
@@ -56,12 +54,12 @@ class PageRulesTest extends TestCase
|
||||
'order' => 'status',
|
||||
'direction' => 'desc',
|
||||
'match' => 'all'
|
||||
]),
|
||||
$this->equalTo([])
|
||||
])
|
||||
);
|
||||
|
||||
$pr = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$pr->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all');
|
||||
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$pageRules->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all');
|
||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testGetPageRuleDetails()
|
||||
@@ -74,12 +72,12 @@ class PageRulesTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac')
|
||||
);
|
||||
|
||||
$pr = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$pr->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
|
||||
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$pageRules->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
|
||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdatePageRule()
|
||||
@@ -97,7 +95,6 @@ class PageRulesTest extends TestCase
|
||||
->method('patch')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'targets' => $target->getArray(),
|
||||
'actions' => $action->getArray(),
|
||||
@@ -106,10 +103,11 @@ class PageRulesTest extends TestCase
|
||||
])
|
||||
);
|
||||
|
||||
$pr = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$result = $pr->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
|
||||
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$result = $pageRules->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testDeletePageRule()
|
||||
@@ -122,14 +120,13 @@ class PageRulesTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('delete')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac')
|
||||
);
|
||||
|
||||
$pr = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$result = $pr->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
|
||||
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||
$result = $pageRules->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
|
||||
149
tests/Endpoints/RailgunTest.php
Normal file
149
tests/Endpoints/RailgunTest.php
Normal file
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 23/10/2017
|
||||
* Time: 11:20
|
||||
*/
|
||||
|
||||
class RailgunTest extends TestCase
|
||||
{
|
||||
public function testcreate()
|
||||
{
|
||||
$details = [
|
||||
'name' => 'My Railgun',
|
||||
];
|
||||
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createRailgun.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('post')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('railguns'),
|
||||
$this->equalTo(['name' => $details['name']])
|
||||
);
|
||||
|
||||
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
|
||||
$result = $railgun->create($details['name']);
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
|
||||
foreach ($details as $property => $value) {
|
||||
$this->assertEquals($result->result->{ $property }, $value);
|
||||
}
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testlist()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRailguns.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('get')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('railguns'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'direction' => 'desc'
|
||||
])
|
||||
);
|
||||
|
||||
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
|
||||
$result = $railgun->list(1, 20, 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testget()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getRailgun.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('get')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('railguns/e928d310693a83094309acf9ead50448')
|
||||
);
|
||||
|
||||
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
|
||||
$result = $railgun->get('e928d310693a83094309acf9ead50448');
|
||||
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $result->id);
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testgetZones()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRailgunZones.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('get')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('railguns/e928d310693a83094309acf9ead50448/zones')
|
||||
);
|
||||
|
||||
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
|
||||
$result = $railgun->getZones('e928d310693a83094309acf9ead50448');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $railgun->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testupdate()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateRailgun.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('patch')->willReturn($response);
|
||||
|
||||
$details = [
|
||||
'enabled' => true,
|
||||
];
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('patch')
|
||||
->with(
|
||||
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
|
||||
$this->equalTo($details)
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\Railgun($mock);
|
||||
$result = $waf->update('e928d310693a83094309acf9ead50448', true);
|
||||
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $result->id);
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $waf->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testdelete()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteRailgun.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('delete')->willReturn($response);
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('delete')
|
||||
->with(
|
||||
$this->equalTo('railguns/e928d310693a83094309acf9ead50448')
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\Railgun($mock);
|
||||
$waf->delete('e928d310693a83094309acf9ead50448');
|
||||
$this->assertEquals('e928d310693a83094309acf9ead50448', $waf->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
71
tests/Endpoints/TLSTest.php
Normal file
71
tests/Endpoints/TLSTest.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Jurgen Coetsiers
|
||||
* Date: 21/10/2018
|
||||
* Time: 09:09
|
||||
*/
|
||||
|
||||
class TLSTest extends TestCase
|
||||
{
|
||||
public function testEnableTLS13()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/enableTLS13.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/tls_1_3'),
|
||||
$this->equalTo(['value' => 'on'])
|
||||
);
|
||||
|
||||
$zoneTLSSettings = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||
$result = $zoneTLSSettings->enableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
||||
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testDisableTLS13()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/disableTLS13.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/tls_1_3'),
|
||||
$this->equalTo(['value' => 'off'])
|
||||
);
|
||||
|
||||
$zoneTLSSettings = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||
$result = $zoneTLSSettings->disableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
||||
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testChangeMinimimTLSVersion()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/changeMinimumTLSVersion.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/min_tls_version'),
|
||||
$this->equalTo(['value' => '1.1'])
|
||||
);
|
||||
|
||||
$zoneTLSSettings = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||
$result = $zoneTLSSettings->changeMinimumTLSVersion('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', '1.1');
|
||||
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,6 @@
|
||||
* Time: 15:19
|
||||
*/
|
||||
|
||||
use Cloudflare\API\Endpoints\UARules;
|
||||
|
||||
class UARulesTest extends TestCase
|
||||
{
|
||||
public function testListRules()
|
||||
@@ -24,18 +22,18 @@ class UARulesTest extends TestCase
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20
|
||||
]),
|
||||
$this->equalTo([])
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$result = $zones->listRules("023e105f4ecef8ad9ca31a8372d0c353", 1, 20);
|
||||
$result = $zones->listRules('023e105f4ecef8ad9ca31a8372d0c353');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->result[0]->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testCreateRule()
|
||||
@@ -52,7 +50,6 @@ class UARulesTest extends TestCase
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'mode' => 'js_challenge',
|
||||
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
|
||||
@@ -61,14 +58,15 @@ class UARulesTest extends TestCase
|
||||
])
|
||||
);
|
||||
|
||||
$ld = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$ld->createRule(
|
||||
$rules = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$rules->createRule(
|
||||
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||
'js_challenge',
|
||||
$config,
|
||||
'372e67954025e0ba6aaa6d586b9e0b59',
|
||||
'Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack'
|
||||
);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function getRuleDetails()
|
||||
@@ -81,14 +79,14 @@ class UARulesTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59')
|
||||
);
|
||||
|
||||
$lockdown = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$result = $lockdown->getRuleDetails("023e105f4ecef8ad9ca31a8372d0c353", "372e67954025e0ba6aaa6d586b9e0b59");
|
||||
$result = $lockdown->getRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $lockdown->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdateRule()
|
||||
@@ -105,7 +103,6 @@ class UARulesTest extends TestCase
|
||||
->method('put')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'mode' => 'js_challenge',
|
||||
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
|
||||
@@ -114,14 +111,15 @@ class UARulesTest extends TestCase
|
||||
])
|
||||
);
|
||||
|
||||
$ld = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$ld->updateRule(
|
||||
$rules = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$rules->updateRule(
|
||||
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||
'372e67954025e0ba6aaa6d586b9e0b59',
|
||||
'js_challenge',
|
||||
$config,
|
||||
'Restrict access to these endpoints to requests from a known IP address'
|
||||
);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testDeleteRule()
|
||||
@@ -134,12 +132,11 @@ class UARulesTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('delete')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59')
|
||||
);
|
||||
|
||||
$ld = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$ld->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
$rules = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||
$rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,10 +17,11 @@ class UserTest extends TestCase
|
||||
$user = new \Cloudflare\API\Endpoints\User($mock);
|
||||
$details = $user->getUserDetails();
|
||||
|
||||
$this->assertObjectHasAttribute("id", $details);
|
||||
$this->assertEquals("7c5dae5552338874e5053f2534d2767a", $details->id);
|
||||
$this->assertObjectHasAttribute("email", $details);
|
||||
$this->assertEquals("user@example.com", $details->email);
|
||||
$this->assertObjectHasAttribute('id', $details);
|
||||
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $details->id);
|
||||
$this->assertObjectHasAttribute('email', $details);
|
||||
$this->assertEquals('user@example.com', $details->email);
|
||||
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testGetUserID()
|
||||
@@ -31,7 +32,8 @@ class UserTest extends TestCase
|
||||
$mock->method('get')->willReturn($response);
|
||||
|
||||
$user = new \Cloudflare\API\Endpoints\User($mock);
|
||||
$this->assertEquals("7c5dae5552338874e5053f2534d2767a", $user->getUserID());
|
||||
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getUserID());
|
||||
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testGetUserEmail()
|
||||
@@ -44,7 +46,8 @@ class UserTest extends TestCase
|
||||
$mock->expects($this->once())->method('get');
|
||||
|
||||
$user = new \Cloudflare\API\Endpoints\User($mock);
|
||||
$this->assertEquals("user@example.com", $user->getUserEmail());
|
||||
$this->assertEquals('user@example.com', $user->getUserEmail());
|
||||
$this->assertEquals('user@example.com', $user->getBody()->result->email);
|
||||
}
|
||||
|
||||
public function testUpdateUserDetails()
|
||||
@@ -56,9 +59,10 @@ class UserTest extends TestCase
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('patch')
|
||||
->with($this->equalTo('user'), $this->equalTo([]), $this->equalTo(['email' => 'user2@example.com']));
|
||||
->with($this->equalTo('user'), $this->equalTo(['email' => 'user2@example.com']));
|
||||
|
||||
$user = new \Cloudflare\API\Endpoints\User($mock);
|
||||
$user->updateUserDetails(['email' => "user2@example.com"]);
|
||||
$user->updateUserDetails(['email' => 'user2@example.com']);
|
||||
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
|
||||
221
tests/Endpoints/WAFTest.php
Normal file
221
tests/Endpoints/WAFTest.php
Normal file
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: junade
|
||||
* Date: 23/10/2017
|
||||
* Time: 13:34
|
||||
*/
|
||||
|
||||
class WAFTest extends TestCase
|
||||
{
|
||||
public function testgetPackages()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPackages.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'order' => 'status',
|
||||
'direction' => 'desc'
|
||||
])
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->getPackages('023e105f4ecef8ad9ca31a8372d0c353', 1, 20, 'status', 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $waf->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testgetPackageInfo()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPackageInfo.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b')
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->getPackageInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b');
|
||||
|
||||
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->id);
|
||||
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $waf->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testgetRules()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPackageRules.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'order' => 'status',
|
||||
'direction' => 'desc'
|
||||
])
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->getRules('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 1, 20, 'status', 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $waf->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testgetRuleInfo()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPackageRuleInfo.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023')
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->getRuleInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'f939de3be84e66e757adcdcb87908023');
|
||||
|
||||
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $result->id);
|
||||
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $waf->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testupdateRule()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updatePackageRule.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('patch')->willReturn($response);
|
||||
|
||||
$details = [
|
||||
'mode' => 'on',
|
||||
];
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('patch')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'),
|
||||
$this->equalTo($details)
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->updateRule('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'f939de3be84e66e757adcdcb87908023', 'on');
|
||||
|
||||
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $result->id);
|
||||
|
||||
foreach ($details as $property => $value) {
|
||||
$this->assertEquals($result->{ $property }, $value);
|
||||
}
|
||||
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $waf->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function getGroups()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPackageGroups.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'order' => 'status',
|
||||
'direction' => 'desc'
|
||||
])
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->getGroups('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 1, 20, 'status', 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testgetGroupInfo()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPackageGroupInfo.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/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5')
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->getGroupInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'de677e5818985db1285d0e80225f06e5');
|
||||
|
||||
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->id);
|
||||
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testupdateGroup()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updatePackageGroup.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('patch')->willReturn($response);
|
||||
|
||||
$details = [
|
||||
'mode' => 'off',
|
||||
];
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('patch')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'),
|
||||
$this->equalTo($details)
|
||||
);
|
||||
|
||||
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
|
||||
$result = $waf->updateGroup('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'de677e5818985db1285d0e80225f06e5', 'off');
|
||||
|
||||
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->id);
|
||||
|
||||
foreach ($details as $property => $value) {
|
||||
$this->assertEquals($result->{ $property }, $value);
|
||||
}
|
||||
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
@@ -19,21 +19,21 @@ class ZoneLockdownTest extends TestCase
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$result = $zones->listLockdowns("023e105f4ecef8ad9ca31a8372d0c353", 1, 20);
|
||||
$result = $zones->listLockdowns('023e105f4ecef8ad9ca31a8372d0c353');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->result[0]->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testAddLockdown()
|
||||
@@ -50,23 +50,23 @@ class ZoneLockdownTest extends TestCase
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'urls' => ["api.mysite.com/some/endpoint*"],
|
||||
'urls' => ['api.mysite.com/some/endpoint*'],
|
||||
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
|
||||
'description' => 'Restrict access to these endpoints to requests from a known IP address',
|
||||
'configurations' => $config->getArray(),
|
||||
])
|
||||
);
|
||||
|
||||
$ld = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$ld->createLockdown(
|
||||
$zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$zoneLockdown->createLockdown(
|
||||
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||
["api.mysite.com/some/endpoint*"],
|
||||
['api.mysite.com/some/endpoint*'],
|
||||
$config,
|
||||
'372e67954025e0ba6aaa6d586b9e0b59',
|
||||
'Restrict access to these endpoints to requests from a known IP address'
|
||||
);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testGetRecordDetails()
|
||||
@@ -79,14 +79,14 @@ class ZoneLockdownTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59')
|
||||
);
|
||||
|
||||
$lockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$result = $lockdown->getLockdownDetails("023e105f4ecef8ad9ca31a8372d0c353", "372e67954025e0ba6aaa6d586b9e0b59");
|
||||
$result = $lockdown->getLockdownDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
|
||||
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $lockdown->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testUpdateLockdown()
|
||||
@@ -103,23 +103,23 @@ class ZoneLockdownTest extends TestCase
|
||||
->method('put')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([
|
||||
'urls' => ["api.mysite.com/some/endpoint*"],
|
||||
'urls' => ['api.mysite.com/some/endpoint*'],
|
||||
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
|
||||
'description' => 'Restrict access to these endpoints to requests from a known IP address',
|
||||
'configurations' => $config->getArray(),
|
||||
])
|
||||
);
|
||||
|
||||
$ld = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$ld->updateLockdown(
|
||||
$zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$zoneLockdown->updateLockdown(
|
||||
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||
'372e67954025e0ba6aaa6d586b9e0b59',
|
||||
["api.mysite.com/some/endpoint*"],
|
||||
['api.mysite.com/some/endpoint*'],
|
||||
$config,
|
||||
'Restrict access to these endpoints to requests from a known IP address'
|
||||
);
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testDeleteLockdown()
|
||||
@@ -135,12 +135,11 @@ class ZoneLockdownTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('delete')
|
||||
->with(
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59')
|
||||
);
|
||||
|
||||
$ld = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$ld->deleteLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
$zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
|
||||
$zoneLockdown->deleteLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
|
||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,34 +19,34 @@ class ZonesTest extends TestCase
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo(['name' => 'example.com', 'jumpstart' => false])
|
||||
$this->equalTo(['name' => 'example.com', 'jump_start' => false])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->addZone("example.com");
|
||||
$result = $zones->addZone('example.com');
|
||||
|
||||
$this->assertObjectHasAttribute("id", $result);
|
||||
$this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result->id);
|
||||
$this->assertObjectHasAttribute('id', $result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->id);
|
||||
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createPageRule.json');
|
||||
|
||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||
$mock->method('post')->willReturn($response);
|
||||
|
||||
$org = new stdClass();
|
||||
$org->id = "01a7362d577a6c3019a474fd6f485823";
|
||||
|
||||
$mock->expects($this->once())
|
||||
->method('post')
|
||||
->with(
|
||||
$this->equalTo('zones'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo(['name' => 'example.com', 'jumpstart' => true, 'organization' => $org])
|
||||
$this->equalTo([
|
||||
'name' => 'example.com',
|
||||
'jump_start' => true,
|
||||
'organization' => ['id' => '01a7362d577a6c3019a474fd6f485823']
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$zones->addZone("example.com", true, "01a7362d577a6c3019a474fd6f485823");
|
||||
$zones->addZone('example.com', true, '01a7362d577a6c3019a474fd6f485823');
|
||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testActivationTest()
|
||||
@@ -59,15 +59,14 @@ class ZonesTest extends TestCase
|
||||
$mock->expects($this->once())
|
||||
->method('put')
|
||||
->with(
|
||||
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check')
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->activationCheck("c2547eb745079dac9320b638f5e225cf483cc5cfdda41");
|
||||
$result = $zones->activationCheck('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testListZones()
|
||||
@@ -81,26 +80,45 @@ class ZonesTest extends TestCase
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'name' => 'example.com',
|
||||
'status' => 'active',
|
||||
'order' => 'status',
|
||||
'direction' => 'desc'
|
||||
]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'name' => 'example.com',
|
||||
'status' => 'active',
|
||||
'order' => 'status',
|
||||
'direction' => 'desc',
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->listZones("example.com", "active", 1, 20, "status", "desc", "all");
|
||||
$result = $zones->listZones('example.com', 'active', 1, 20, 'status', 'desc');
|
||||
|
||||
$this->assertObjectHasAttribute('result', $result);
|
||||
$this->assertObjectHasAttribute('result_info', $result);
|
||||
|
||||
$this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result->result[0]->id);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->result[0]->id);
|
||||
$this->assertEquals(1, $result->result_info->page);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
public function testGetZoneByID()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getZoneById.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/023e105f4ecef8ad9ca31a8372d0c353'));
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->getZoneById('023e105f4ecef8ad9ca31a8372d0c353');
|
||||
|
||||
$this->assertInstanceOf(\stdClass::class, $result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
|
||||
$this->assertEquals('example.com', $zones->getBody()->result->name);
|
||||
}
|
||||
|
||||
public function testGetZoneID()
|
||||
@@ -114,19 +132,61 @@ class ZonesTest extends TestCase
|
||||
->method('get')
|
||||
->with(
|
||||
$this->equalTo('zones'),
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'name' => 'example.com',
|
||||
]),
|
||||
$this->equalTo([])
|
||||
$this->equalTo([
|
||||
'page' => 1,
|
||||
'per_page' => 20,
|
||||
'match' => 'all',
|
||||
'name' => 'example.com',
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->getZoneID("example.com");
|
||||
$result = $zones->getZoneID('example.com');
|
||||
|
||||
$this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
|
||||
}
|
||||
|
||||
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(['since' => '-10080', 'until' => '0', 'continuous' => var_export(true, 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(['value' => 'on'])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->changeDevelopmentMode('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('development_mode', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testCachePurgeEverything()
|
||||
@@ -140,13 +200,66 @@ class ZonesTest extends TestCase
|
||||
->method('delete')
|
||||
->with(
|
||||
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
||||
$this->equalTo([]),
|
||||
$this->equalTo(["purge_everything" => true])
|
||||
$this->equalTo(['purge_everything' => true])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->cachePurgeEverything("c2547eb745079dac9320b638f5e225cf483cc5cfdda41");
|
||||
$result = $zones->cachePurgeEverything('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
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);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
|
||||
}
|
||||
|
||||
public function testCachePurge()
|
||||
{
|
||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurge.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' => [
|
||||
'https://example.com/file.jpg',
|
||||
]
|
||||
])
|
||||
);
|
||||
|
||||
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||
$result = $zones->cachePurge('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', [
|
||||
'https://example.com/file.jpg',
|
||||
]);
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
|
||||
}
|
||||
}
|
||||
|
||||
8
tests/Fixtures/Endpoints/cachePurge.json
Normal file
8
tests/Fixtures/Endpoints/cachePurge.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": {
|
||||
"id": "023e105f4ecef8ad9ca31a8372d0c353"
|
||||
}
|
||||
}
|
||||
8
tests/Fixtures/Endpoints/cachePurgeHost.json
Normal file
8
tests/Fixtures/Endpoints/cachePurgeHost.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": {
|
||||
"id": "023e105f4ecef8ad9ca31a8372d0c353"
|
||||
}
|
||||
}
|
||||
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": []
|
||||
}
|
||||
6
tests/Fixtures/Endpoints/changeMinimumTLSVersion.json
Normal file
6
tests/Fixtures/Endpoints/changeMinimumTLSVersion.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": "1.1"
|
||||
}
|
||||
30
tests/Fixtures/Endpoints/createAccessRule.json
Normal file
30
tests/Fixtures/Endpoints/createAccessRule.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "92f17202ed8bd63d69a66b86a49a8f6b",
|
||||
"notes": "This rule is on because of an event that occured on date X",
|
||||
"allowed_modes": [
|
||||
"whitelist",
|
||||
"block",
|
||||
"challenge"
|
||||
],
|
||||
"mode": "challenge",
|
||||
"configuration": {
|
||||
"target": "ip",
|
||||
"value": "1.2.3.4"
|
||||
},
|
||||
"scope": {
|
||||
"id": "7c5dae5552338874e5053f2534d2767a",
|
||||
"email": "user@example.com",
|
||||
"type": "user"
|
||||
},
|
||||
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||
}
|
||||
}
|
||||
20
tests/Fixtures/Endpoints/createCustomHostname.json
Normal file
20
tests/Fixtures/Endpoints/createCustomHostname.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9",
|
||||
"hostname": "app.example.com",
|
||||
"ssl": {
|
||||
"status": "pending_validation",
|
||||
"method": "http",
|
||||
"type": "dv",
|
||||
"cname_target": "dcv.digicert.com",
|
||||
"cname": "810b7d5f01154524b961ba0cd578acc2.app.example.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
23
tests/Fixtures/Endpoints/createRailgun.json
Normal file
23
tests/Fixtures/Endpoints/createRailgun.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "e928d310693a83094309acf9ead50448",
|
||||
"name": "My Railgun",
|
||||
"status": "active",
|
||||
"enabled": true,
|
||||
"zones_connected": 2,
|
||||
"build": "b1234",
|
||||
"version": "2.1",
|
||||
"revision": "123",
|
||||
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
|
||||
"activated_on": "2014-01-02T02:20:00Z",
|
||||
"created_on": "2014-01-01T05:20:00Z",
|
||||
"modified_on": "2014-01-01T05:20:00Z"
|
||||
}
|
||||
}
|
||||
12
tests/Fixtures/Endpoints/deleteAccessRule.json
Normal file
12
tests/Fixtures/Endpoints/deleteAccessRule.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "92f17202ed8bd63d69a66b86a49a8f6b"
|
||||
}
|
||||
}
|
||||
3
tests/Fixtures/Endpoints/deleteHostname.json
Normal file
3
tests/Fixtures/Endpoints/deleteHostname.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9"
|
||||
}
|
||||
8
tests/Fixtures/Endpoints/deleteMembership.json
Normal file
8
tests/Fixtures/Endpoints/deleteMembership.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": {
|
||||
"id": "4536bcfad5faccb111b47003c79917fa"
|
||||
}
|
||||
}
|
||||
12
tests/Fixtures/Endpoints/deleteRailgun.json
Normal file
12
tests/Fixtures/Endpoints/deleteRailgun.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "e928d310693a83094309acf9ead50448"
|
||||
}
|
||||
}
|
||||
6
tests/Fixtures/Endpoints/disableTLS13.json
Normal file
6
tests/Fixtures/Endpoints/disableTLS13.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": "off"
|
||||
}
|
||||
6
tests/Fixtures/Endpoints/enableTLS13.json
Normal file
6
tests/Fixtures/Endpoints/enableTLS13.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": "on"
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
20
tests/Fixtures/Endpoints/getHostname.json
Normal file
20
tests/Fixtures/Endpoints/getHostname.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9",
|
||||
"hostname": "app.example.com",
|
||||
"ssl": {
|
||||
"status": "pending_validation",
|
||||
"method": "http",
|
||||
"type": "dv",
|
||||
"cname_target": "dcv.digicert.com",
|
||||
"cname": "810b7d5f01154524b961ba0cd578acc2.app.example.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
70
tests/Fixtures/Endpoints/getMembershipDetails.json
Normal file
70
tests/Fixtures/Endpoints/getMembershipDetails.json
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": {
|
||||
"id": "4536bcfad5faccb111b47003c79917fa",
|
||||
"code": "05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0",
|
||||
"status": "accepted",
|
||||
"account": {
|
||||
"id": "01a7362d577a6c3019a474fd6f485823",
|
||||
"name": "Demo Account",
|
||||
"settings": {
|
||||
"enforce_twofactor": false
|
||||
}
|
||||
},
|
||||
"roles": [
|
||||
"Account Administrator"
|
||||
],
|
||||
"permissions": {
|
||||
"analytics": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"billing": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"cache_purge": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"dns": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"dns_records": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"lb": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"logs": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"organization": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"ssl": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"waf": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"zones": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"zone_settings": {
|
||||
"read": true,
|
||||
"write": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
22
tests/Fixtures/Endpoints/getPackageGroupInfo.json
Normal file
22
tests/Fixtures/Endpoints/getPackageGroupInfo.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "de677e5818985db1285d0e80225f06e5",
|
||||
"name": "Project Honey Pot",
|
||||
"description": "Group designed to protect against IP addresses that are a threat and typically used to launch DDoS attacks",
|
||||
"rules_count": 10,
|
||||
"modified_rules_count": 2,
|
||||
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"mode": "on",
|
||||
"allowed_modes": [
|
||||
"on",
|
||||
"off"
|
||||
]
|
||||
}
|
||||
}
|
||||
17
tests/Fixtures/Endpoints/getPackageInfo.json
Normal file
17
tests/Fixtures/Endpoints/getPackageInfo.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"name": "WordPress rules",
|
||||
"description": "Common WordPress exploit protections",
|
||||
"detection_mode": "traditional",
|
||||
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
|
||||
"status": "active"
|
||||
}
|
||||
}
|
||||
24
tests/Fixtures/Endpoints/getPackageRuleInfo.json
Normal file
24
tests/Fixtures/Endpoints/getPackageRuleInfo.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "f939de3be84e66e757adcdcb87908023",
|
||||
"description": "SQL injection prevention for SELECT statements",
|
||||
"priority": 5,
|
||||
"group": {
|
||||
"id": "de677e5818985db1285d0e80225f06e5",
|
||||
"name": "Project Honey Pot"
|
||||
},
|
||||
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"allowed_modes": [
|
||||
"on",
|
||||
"off"
|
||||
],
|
||||
"mode": "on"
|
||||
}
|
||||
}
|
||||
23
tests/Fixtures/Endpoints/getRailgun.json
Normal file
23
tests/Fixtures/Endpoints/getRailgun.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "e928d310693a83094309acf9ead50448",
|
||||
"name": "My Railgun",
|
||||
"status": "active",
|
||||
"enabled": true,
|
||||
"zones_connected": 2,
|
||||
"build": "b1234",
|
||||
"version": "2.1",
|
||||
"revision": "123",
|
||||
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
|
||||
"activated_on": "2014-01-02T02:20:00Z",
|
||||
"created_on": "2014-01-01T05:20:00Z",
|
||||
"modified_on": "2014-01-01T05:20:00Z"
|
||||
}
|
||||
}
|
||||
59
tests/Fixtures/Endpoints/getZoneById.json
Normal file
59
tests/Fixtures/Endpoints/getZoneById.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": {
|
||||
"id": "023e105f4ecef8ad9ca31a8372d0c353",
|
||||
"name": "example.com",
|
||||
"development_mode": 7200,
|
||||
"original_name_servers": [
|
||||
"ns1.originaldnshost.com",
|
||||
"ns2.originaldnshost.com"
|
||||
],
|
||||
"original_registrar": "GoDaddy",
|
||||
"original_dnshost": "NameCheap",
|
||||
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||
"activated_on": "2014-01-02T00:01:00.12345Z",
|
||||
"owner": {
|
||||
"id": "7c5dae5552338874e5053f2534d2767a",
|
||||
"email": "user@example.com",
|
||||
"type": "user"
|
||||
},
|
||||
"account": {
|
||||
"id": "01a7362d577a6c3019a474fd6f485823",
|
||||
"name": "Demo Account"
|
||||
},
|
||||
"permissions": [
|
||||
"#zone:read",
|
||||
"#zone:edit"
|
||||
],
|
||||
"plan": {
|
||||
"id": "e592fd9519420ba7405e1307bff33214",
|
||||
"name": "Pro Plan",
|
||||
"price": 20,
|
||||
"currency": "USD",
|
||||
"frequency": "monthly",
|
||||
"legacy_id": "pro",
|
||||
"is_subscribed": true,
|
||||
"can_subscribe": true
|
||||
},
|
||||
"plan_pending": {
|
||||
"id": "e592fd9519420ba7405e1307bff33214",
|
||||
"name": "Pro Plan",
|
||||
"price": 20,
|
||||
"currency": "USD",
|
||||
"frequency": "monthly",
|
||||
"legacy_id": "pro",
|
||||
"is_subscribed": true,
|
||||
"can_subscribe": true
|
||||
},
|
||||
"status": "active",
|
||||
"paused": false,
|
||||
"type": "full",
|
||||
"name_servers": [
|
||||
"tony.ns.cloudflare.com",
|
||||
"woz.ns.cloudflare.com"
|
||||
]
|
||||
}
|
||||
}
|
||||
38
tests/Fixtures/Endpoints/listAccessRules.json
Normal file
38
tests/Fixtures/Endpoints/listAccessRules.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "92f17202ed8bd63d69a66b86a49a8f6b",
|
||||
"notes": "This rule is on because of an event that occured on date X",
|
||||
"allowed_modes": [
|
||||
"whitelist",
|
||||
"block",
|
||||
"challenge"
|
||||
],
|
||||
"mode": "challenge",
|
||||
"configuration": {
|
||||
"target": "ip",
|
||||
"value": "1.2.3.4"
|
||||
},
|
||||
"scope": {
|
||||
"id": "7c5dae5552338874e5053f2534d2767a",
|
||||
"email": "user@example.com",
|
||||
"type": "user"
|
||||
},
|
||||
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
28
tests/Fixtures/Endpoints/listHostnames.json
Normal file
28
tests/Fixtures/Endpoints/listHostnames.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9",
|
||||
"hostname": "app.example.com",
|
||||
"ssl": {
|
||||
"status": "pending_validation",
|
||||
"method": "http",
|
||||
"type": "dv",
|
||||
"cname_target": "dcv.digicert.com",
|
||||
"cname": "810b7d5f01154524b961ba0cd578acc2.app.example.com"
|
||||
}
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
78
tests/Fixtures/Endpoints/listMemberships.json
Normal file
78
tests/Fixtures/Endpoints/listMemberships.json
Normal file
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": [
|
||||
{
|
||||
"id": "4536bcfad5faccb111b47003c79917fa",
|
||||
"code": "05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0",
|
||||
"status": "accepted",
|
||||
"account": {
|
||||
"id": "01a7362d577a6c3019a474fd6f485823",
|
||||
"name": "Demo Account",
|
||||
"settings": {
|
||||
"enforce_twofactor": false
|
||||
}
|
||||
},
|
||||
"roles": [
|
||||
"Account Administrator"
|
||||
],
|
||||
"permissions": {
|
||||
"analytics": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"billing": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"cache_purge": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"dns": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"dns_records": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"lb": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"logs": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"organization": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"ssl": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"waf": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"zones": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"zone_settings": {
|
||||
"read": true,
|
||||
"write": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
30
tests/Fixtures/Endpoints/listPackageGroups.json
Normal file
30
tests/Fixtures/Endpoints/listPackageGroups.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "de677e5818985db1285d0e80225f06e5",
|
||||
"name": "Project Honey Pot",
|
||||
"description": "Group designed to protect against IP addresses that are a threat and typically used to launch DDoS attacks",
|
||||
"rules_count": 10,
|
||||
"modified_rules_count": 2,
|
||||
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"mode": "on",
|
||||
"allowed_modes": [
|
||||
"on",
|
||||
"off"
|
||||
]
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
38
tests/Fixtures/Endpoints/listPackageRules.json
Normal file
38
tests/Fixtures/Endpoints/listPackageRules.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "92f17202ed8bd63d69a66b86a49a8f6b",
|
||||
"notes": "This rule is on because of an event that occured on date X",
|
||||
"allowed_modes": [
|
||||
"whitelist",
|
||||
"block",
|
||||
"challenge"
|
||||
],
|
||||
"mode": "challenge",
|
||||
"configuration": {
|
||||
"target": "ip",
|
||||
"value": "1.2.3.4"
|
||||
},
|
||||
"scope": {
|
||||
"id": "7c5dae5552338874e5053f2534d2767a",
|
||||
"email": "user@example.com",
|
||||
"type": "user"
|
||||
},
|
||||
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
25
tests/Fixtures/Endpoints/listPackages.json
Normal file
25
tests/Fixtures/Endpoints/listPackages.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"name": "WordPress rules",
|
||||
"description": "Common WordPress exploit protections",
|
||||
"detection_mode": "traditional",
|
||||
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
|
||||
"status": "active"
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
30
tests/Fixtures/Endpoints/listRailgunZones.json
Normal file
30
tests/Fixtures/Endpoints/listRailgunZones.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "023e105f4ecef8ad9ca31a8372d0c353",
|
||||
"name": "example.com",
|
||||
"development_mode": 7200,
|
||||
"original_name_servers": [
|
||||
"ns1.originaldnshost.com",
|
||||
"ns2.originaldnshost.com"
|
||||
],
|
||||
"original_registrar": "GoDaddy",
|
||||
"original_dnshost": "NameCheap",
|
||||
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
31
tests/Fixtures/Endpoints/listRailguns.json
Normal file
31
tests/Fixtures/Endpoints/listRailguns.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": [
|
||||
{
|
||||
"id": "e928d310693a83094309acf9ead50448",
|
||||
"name": "My Railgun",
|
||||
"status": "active",
|
||||
"enabled": true,
|
||||
"zones_connected": 2,
|
||||
"build": "b1234",
|
||||
"version": "2.1",
|
||||
"revision": "123",
|
||||
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
|
||||
"activated_on": "2014-01-02T02:20:00Z",
|
||||
"created_on": "2014-01-01T05:20:00Z",
|
||||
"modified_on": "2014-01-01T05:20:00Z"
|
||||
}
|
||||
],
|
||||
"result_info": {
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"count": 1,
|
||||
"total_count": 2000
|
||||
}
|
||||
}
|
||||
30
tests/Fixtures/Endpoints/updateAccessRule.json
Normal file
30
tests/Fixtures/Endpoints/updateAccessRule.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "92f17202ed8bd63d69a66b86a49a8f6b",
|
||||
"notes": "This rule is on because of an event that occured on date X",
|
||||
"allowed_modes": [
|
||||
"whitelist",
|
||||
"block",
|
||||
"challenge"
|
||||
],
|
||||
"mode": "challenge",
|
||||
"configuration": {
|
||||
"target": "ip",
|
||||
"value": "1.2.3.4"
|
||||
},
|
||||
"scope": {
|
||||
"id": "7c5dae5552338874e5053f2534d2767a",
|
||||
"email": "user@example.com",
|
||||
"type": "user"
|
||||
},
|
||||
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||
}
|
||||
}
|
||||
20
tests/Fixtures/Endpoints/updateHostname.json
Normal file
20
tests/Fixtures/Endpoints/updateHostname.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9",
|
||||
"hostname": "app.example.com",
|
||||
"ssl": {
|
||||
"status": "pending_validation",
|
||||
"method": "http",
|
||||
"type": "dv",
|
||||
"cname_target": "dcv.digicert.com",
|
||||
"cname": "810b7d5f01154524b961ba0cd578acc2.app.example.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
70
tests/Fixtures/Endpoints/updateMembershipStatus.json
Normal file
70
tests/Fixtures/Endpoints/updateMembershipStatus.json
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [],
|
||||
"messages": [],
|
||||
"result": {
|
||||
"id": "4536bcfad5faccb111b47003c79917fa",
|
||||
"code": "05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0",
|
||||
"status": "accepted",
|
||||
"account": {
|
||||
"id": "01a7362d577a6c3019a474fd6f485823",
|
||||
"name": "Demo Account",
|
||||
"settings": {
|
||||
"enforce_twofactor": false
|
||||
}
|
||||
},
|
||||
"roles": [
|
||||
"Account Administrator"
|
||||
],
|
||||
"permissions": {
|
||||
"analytics": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"billing": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"cache_purge": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"dns": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"dns_records": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"lb": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"logs": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"organization": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"ssl": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"waf": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"zones": {
|
||||
"read": true,
|
||||
"write": true
|
||||
},
|
||||
"zone_settings": {
|
||||
"read": true,
|
||||
"write": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
22
tests/Fixtures/Endpoints/updatePackageGroup.json
Normal file
22
tests/Fixtures/Endpoints/updatePackageGroup.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "de677e5818985db1285d0e80225f06e5",
|
||||
"name": "Project Honey Pot",
|
||||
"description": "Group designed to protect against IP addresses that are a threat and typically used to launch DDoS attacks",
|
||||
"rules_count": 10,
|
||||
"modified_rules_count": 2,
|
||||
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"mode": "off",
|
||||
"allowed_modes": [
|
||||
"on",
|
||||
"off"
|
||||
]
|
||||
}
|
||||
}
|
||||
24
tests/Fixtures/Endpoints/updatePackageRule.json
Normal file
24
tests/Fixtures/Endpoints/updatePackageRule.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "f939de3be84e66e757adcdcb87908023",
|
||||
"description": "SQL injection prevention for SELECT statements",
|
||||
"priority": 5,
|
||||
"group": {
|
||||
"id": "de677e5818985db1285d0e80225f06e5",
|
||||
"name": "Project Honey Pot"
|
||||
},
|
||||
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
|
||||
"allowed_modes": [
|
||||
"on",
|
||||
"off"
|
||||
],
|
||||
"mode": "on"
|
||||
}
|
||||
}
|
||||
23
tests/Fixtures/Endpoints/updateRailgun.json
Normal file
23
tests/Fixtures/Endpoints/updateRailgun.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"success": true,
|
||||
"errors": [
|
||||
{}
|
||||
],
|
||||
"messages": [
|
||||
{}
|
||||
],
|
||||
"result": {
|
||||
"id": "e928d310693a83094309acf9ead50448",
|
||||
"name": "My Railgun",
|
||||
"status": "active",
|
||||
"enabled": true,
|
||||
"zones_connected": 2,
|
||||
"build": "b1234",
|
||||
"version": "2.1",
|
||||
"revision": "123",
|
||||
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
|
||||
"activated_on": "2014-01-02T02:20:00Z",
|
||||
"created_on": "2014-01-01T05:20:00Z",
|
||||
"modified_on": "2014-01-01T05:20:00Z"
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,18 @@
|
||||
<?php
|
||||
use GuzzleHttp\Psr7;
|
||||
use PHPUnit\Framework\TestCase as BaseTestCase;
|
||||
|
||||
abstract class TestCase extends PHPUnit_Framework_TestCase
|
||||
/**
|
||||
* Class TestCase
|
||||
* @SuppressWarnings(PHPMD.NumberOfChildren)
|
||||
*/
|
||||
abstract class TestCase extends BaseTestCase
|
||||
{
|
||||
/**
|
||||
* Returns a PSR7 Stream for a given fixture.
|
||||
*
|
||||
* @param string $fixture The fixture to create the stream for.
|
||||
* @return Psr7Stream
|
||||
* @return Psr7\Stream
|
||||
*/
|
||||
protected function getPsr7StreamForFixture($fixture): Psr7\Stream
|
||||
{
|
||||
@@ -27,7 +32,7 @@ abstract class TestCase extends PHPUnit_Framework_TestCase
|
||||
*
|
||||
* @param string $fixture The fixture to create the response for.
|
||||
* @param integer $statusCode A HTTP Status Code for the response.
|
||||
* @return Psr7Response
|
||||
* @return Psr7\Response
|
||||
*/
|
||||
protected function getPsr7JsonResponseForFixture($fixture, $statusCode = 200): Psr7\Response
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user