Compare commits
172 Commits
1.1.2
...
hotfix/202
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4df937f767 | ||
|
|
30f7fc050e | ||
|
|
9f6be70d92 | ||
|
|
250bf77605 | ||
|
|
d97cf24ee2 | ||
|
|
ba875c32ca | ||
|
|
1b80a3bae7 | ||
|
|
f88a145785 | ||
|
|
e7cc9e067f | ||
|
|
fd55a526b3 | ||
|
|
bfb24200d5 | ||
|
|
3b167bab04 | ||
|
|
c66022e7bf | ||
|
|
a73da76e73 | ||
|
|
aa43a1ea36 | ||
|
|
63b11374f2 | ||
|
|
410b8bebff | ||
|
|
60cdacdfcf | ||
|
|
dfbc5a10d2 | ||
|
|
969fc8cb59 | ||
|
|
a281dd11e7 | ||
|
|
ed822d19ff | ||
|
|
3e605dfa53 | ||
|
|
d9958973e0 | ||
|
|
fd34eaf813 | ||
|
|
be886c36cb | ||
|
|
1a2d2ae708 | ||
|
|
2030e29593 | ||
|
|
5394ec3cc8 | ||
|
|
aea57e4994 | ||
|
|
f8124e76cb | ||
|
|
da3d10c4ee | ||
|
|
135b9a6813 | ||
|
|
f473e5f73c | ||
|
|
9955166ae8 | ||
|
|
c639f20cea | ||
|
|
1e58a65888 | ||
|
|
658ab3fe47 | ||
|
|
d2c4d225e0 | ||
|
|
c58f340633 | ||
|
|
6fbf95f480 | ||
|
|
af14a5f003 | ||
|
|
7db3d6e62c | ||
|
|
6d9b4ddffe | ||
|
|
fab493d2d3 | ||
|
|
afd332a747 | ||
|
|
ffc3989607 | ||
|
|
06de5b0c04 | ||
|
|
8879ba4c0a | ||
|
|
d1b6dd577f | ||
|
|
c575b3bc9b | ||
|
|
251ab5247d | ||
|
|
eaa390497e | ||
|
|
59e8506a45 | ||
|
|
66a2c6ebd7 | ||
|
|
544ef73299 | ||
|
|
694342f718 | ||
|
|
ca426abc32 | ||
|
|
2a83d24954 | ||
|
|
445bc30be7 | ||
|
|
2dc59ddcca | ||
|
|
54545a371e | ||
|
|
27ae3718d4 | ||
|
|
f2e0d6cbe3 | ||
|
|
ed91e639be | ||
|
|
adfb6d28d2 | ||
|
|
9d0df44838 | ||
|
|
6e6a850d62 | ||
|
|
b9051fc1f2 | ||
|
|
b54c3481a3 | ||
|
|
8310111b11 | ||
|
|
f0892ac64f | ||
|
|
d918f7b99e | ||
|
|
f4c2f546b0 | ||
|
|
1be0e794d9 | ||
|
|
9b9984d5fd | ||
|
|
c0198f352a | ||
|
|
39ec310026 | ||
|
|
7276b61e20 | ||
|
|
4e1a12bdea | ||
|
|
61e80bd25f | ||
|
|
ffefe1480a | ||
|
|
f7d9f511ab | ||
|
|
639be12f7a | ||
|
|
2ba05a3ba5 | ||
|
|
1211b644e0 | ||
|
|
58ba140930 | ||
|
|
56b760bb06 | ||
|
|
469d66e92a | ||
|
|
171c6689af | ||
|
|
fd17c57b62 | ||
|
|
647705b852 | ||
|
|
28e1378506 | ||
|
|
39b2f2fd2a | ||
|
|
c49409b978 | ||
|
|
d895b50e47 | ||
|
|
efae17f29d | ||
|
|
ecbe2fe552 | ||
|
|
6a80cb69e2 | ||
|
|
8e279f2217 | ||
|
|
274517553c | ||
|
|
4cb9eb228e | ||
|
|
c525cef45c | ||
|
|
818e6e4505 | ||
|
|
440492e41c | ||
|
|
cb24d2c77f | ||
|
|
9561740484 | ||
|
|
1e2b630964 | ||
|
|
8364249fbb | ||
|
|
22a87e1b91 | ||
|
|
68d862f7da | ||
|
|
66ec1b318f | ||
|
|
29ab101130 | ||
|
|
48404cd0ac | ||
|
|
c5b6bceecb | ||
|
|
89986cfb02 | ||
|
|
b7dfc9e0f1 | ||
|
|
9b9738910d | ||
|
|
90a9f51fd6 | ||
|
|
b17ae6e7d0 | ||
|
|
b558622bb5 | ||
|
|
d913aa827f | ||
|
|
6a9a9f55b6 | ||
|
|
b04abe73bc | ||
|
|
1724b66147 | ||
|
|
7343b7cc46 | ||
|
|
bd10d7f833 | ||
|
|
598ba5c1d1 | ||
|
|
ed06650390 | ||
|
|
246925dec2 | ||
|
|
7a7e6dc364 | ||
|
|
5f57b871aa | ||
|
|
31453d8184 | ||
|
|
21b3f20fb1 | ||
|
|
45834c0709 | ||
|
|
c44a26fa35 | ||
|
|
1764856f5b | ||
|
|
79ca15c066 | ||
|
|
63ded280d3 | ||
|
|
fb9d75d94a | ||
|
|
1cf5963445 | ||
|
|
ecb23ccc44 | ||
|
|
b81c67ddc5 | ||
|
|
b46a2f80f5 | ||
|
|
fab0bc7a12 | ||
|
|
6a29d75001 | ||
|
|
99c174bcb3 | ||
|
|
3cfeedbe4d | ||
|
|
7aa3a118af | ||
|
|
ae2c680e85 | ||
|
|
78eadb9a47 | ||
|
|
e1c2539d9a | ||
|
|
471a42d554 | ||
|
|
d9c0a27b7d | ||
|
|
8182aa8810 | ||
|
|
df12f7ba6f | ||
|
|
9d434a23b3 | ||
|
|
f105d38d85 | ||
|
|
910644f88d | ||
|
|
68b9fa3353 | ||
|
|
c394f5ac4d | ||
|
|
e94ab8ddbe | ||
|
|
2b25365988 | ||
|
|
bd92b2a4c0 | ||
|
|
44eb77f9ca | ||
|
|
fb45932677 | ||
|
|
dde2de4495 | ||
|
|
6acf09ba82 | ||
|
|
6410f50f6d | ||
|
|
d6f0eada8c | ||
|
|
6f1ac605f5 | ||
|
|
9311583f43 |
40
.github/workflows/lint.yml
vendored
Normal file
40
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
name: Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ '*' ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ '*' ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php-versions: ['7.0', '7.1', '7.2', '7.3', '7.4']
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: /tmp/composer-cache
|
||||||
|
key: ${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: php-actions/composer@v5
|
||||||
|
with:
|
||||||
|
command: install
|
||||||
|
args: --prefer-dist --no-progress --no-suggest --verbose
|
||||||
|
php_version: ${{ matrix.php-versions }}
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
- name: Run lint
|
||||||
|
run: make lint
|
||||||
40
.github/workflows/test.yml
vendored
Normal file
40
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
name: Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ '*' ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ '*' ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
php-versions: ['7.0', '7.1', '7.2', '7.3', '7.4']
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
|
||||||
|
- name: Cache Composer dependencies
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: /tmp/composer-cache
|
||||||
|
key: ${{ runner.os }}-php${{ matrix.php-versions }}-${{ hashFiles('**/composer.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: php-actions/composer@v5
|
||||||
|
with:
|
||||||
|
command: install
|
||||||
|
args: --prefer-dist --no-progress --no-suggest --verbose
|
||||||
|
php_version: ${{ matrix.php-versions }}
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: make test
|
||||||
4
.gitignore
vendored
Normal file → Executable file
4
.gitignore
vendored
Normal file → Executable file
@@ -1 +1,3 @@
|
|||||||
/vendor/
|
/.idea
|
||||||
|
/vendor/
|
||||||
|
/nbproject/
|
||||||
|
|||||||
15
.travis.yml
15
.travis.yml
@@ -1,15 +0,0 @@
|
|||||||
language: php
|
|
||||||
|
|
||||||
php:
|
|
||||||
- 7.0
|
|
||||||
- 7.1
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- composer self-update
|
|
||||||
|
|
||||||
install:
|
|
||||||
- travis_retry composer install --no-interaction --prefer-source
|
|
||||||
|
|
||||||
script:
|
|
||||||
- make lint
|
|
||||||
- make test
|
|
||||||
13
Makefile
13
Makefile
@@ -1,17 +1,14 @@
|
|||||||
THIS := $(realpath $(lastword $(MAKEFILE_LIST)))
|
|
||||||
HERE := $(shell dirname $(THIS))
|
|
||||||
|
|
||||||
.PHONY: all fix lint test
|
.PHONY: all fix lint test
|
||||||
|
|
||||||
all: lint test
|
all: lint test
|
||||||
|
|
||||||
fix:
|
fix:
|
||||||
php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs
|
php vendor/bin/php-cs-fixer fix --config=.php_cs
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs --dry-run
|
php vendor/bin/php-cs-fixer fix --config=.php_cs --dry-run
|
||||||
php $(HERE)/vendor/bin/phpmd src/ text cleancode,codesize,controversial,design,naming,unusedcode
|
php vendor/bin/phpmd src/ text cleancode,codesize,controversial,design,naming,unusedcode
|
||||||
php $(HERE)/vendor/bin/phpmd tests/ text cleancode,codesize,controversial,design,naming,unusedcode
|
php vendor/bin/phpmd tests/ text cleancode,codesize,controversial,design,naming,unusedcode
|
||||||
|
|
||||||
test:
|
test:
|
||||||
php $(HERE)/vendor/bin/phpunit --configuration $(HERE)/phpunit.xml
|
php vendor/bin/phpunit --configuration phpunit.xml
|
||||||
|
|||||||
76
README.md
Normal file → Executable file
76
README.md
Normal file → Executable file
@@ -2,46 +2,48 @@
|
|||||||
|
|
||||||
[](https://travis-ci.org/cloudflare/cloudflare-php)
|
[](https://travis-ci.org/cloudflare/cloudflare-php)
|
||||||
|
|
||||||
## Installation
|
See: [cloudflare/cloudflare-php](https://github.com/cloudflare/cloudflare-php)
|
||||||
|
|
||||||
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 SDK: added by Shellrent
|
||||||
|
|
||||||
## Cloudflare API version 4
|
- DNS Record is returned on creation:
|
||||||
|
|
||||||
The Cloudflare API can be found [here](https://api.cloudflare.com/).
|
`Class: Cloudflare\API\Endpoints\DNS`
|
||||||
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-)
|
|
||||||
- [x] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/)
|
|
||||||
- [ ] Virtual DNS Management
|
|
||||||
- [x] Custom hostnames
|
|
||||||
- [x] Manage TLS settings
|
|
||||||
- [x] Zone Lockdown and User-Agent Block rules
|
|
||||||
- [ ] Organization 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/)
|
|
||||||
|
|
||||||
Note that this repository is currently under development, additional classes and endpoints being actively added.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$key = new Cloudflare\API\Auth\APIKey('user@example.com', 'apiKey');
|
public function addRecord(
|
||||||
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
|
string $zoneID,
|
||||||
$user = new Cloudflare\API\Endpoints\User($adapter);
|
string $type,
|
||||||
|
string $name,
|
||||||
echo $user->getUserID();
|
string $content,
|
||||||
|
int $ttl = 0,
|
||||||
|
bool $proxied = true,
|
||||||
|
string $priority = '',
|
||||||
|
array $data = []
|
||||||
|
): \stdClass {
|
||||||
|
$options = [
|
||||||
|
'type' => $type,
|
||||||
|
'name' => $name,
|
||||||
|
'content' => $content,
|
||||||
|
'proxied' => $proxied
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($ttl > 0) {
|
||||||
|
$options['ttl'] = $ttl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($priority)) {
|
||||||
|
$options['priority'] = (int)$priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data)) {
|
||||||
|
$options['data'] = $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = $this->adapter->post('zones/' . $zoneID . '/dns_records', $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
{
|
{
|
||||||
"name": "cloudflare/sdk",
|
"name": "shellrent/cloudflare-php",
|
||||||
"description": "PHP binding for v4 of the Cloudflare Client API.",
|
"description": "PHP binding for v4 of the Cloudflare Client API.",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"require": {
|
"require": {
|
||||||
"guzzlehttp/guzzle": "^6.2.2",
|
"guzzlehttp/guzzle": "~6.0",
|
||||||
"php": ">=7.0.0",
|
"php": ">=7.2.5",
|
||||||
"psr/http-message": "~1.0"
|
"psr/http-message": "~1.0",
|
||||||
|
"ext-json": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "5.7.5",
|
"phpunit/phpunit": "^5.7",
|
||||||
"phpmd/phpmd" : "@stable",
|
"phpmd/phpmd" : "@stable",
|
||||||
"friendsofphp/php-cs-fixer": "^2.6"
|
"friendsofphp/php-cs-fixer": "^2.6"
|
||||||
},
|
},
|
||||||
@@ -28,5 +29,10 @@
|
|||||||
"classmap": [
|
"classmap": [
|
||||||
"tests/"
|
"tests/"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"preferred-install": "dist",
|
||||||
|
"sort-packages": true,
|
||||||
|
"optimize-autoloader": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
534
composer.lock
generated
534
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* User: junade
|
|
||||||
* Date: 13/01/2017
|
|
||||||
* Time: 18:26
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Cloudflare\API\Adapter;
|
namespace Cloudflare\API\Adapter;
|
||||||
|
|
||||||
use Cloudflare\API\Auth\Auth;
|
use Cloudflare\API\Auth\Auth;
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
class Guzzle implements Adapter
|
class Guzzle implements Adapter
|
||||||
@@ -74,36 +70,52 @@ class Guzzle implements Adapter
|
|||||||
return $this->request('delete', $uri, $data, $headers);
|
return $this->request('delete', $uri, $data, $headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @SuppressWarnings(PHPMD.StaticAccess)
|
||||||
|
*/
|
||||||
public function request(string $method, string $uri, array $data = [], array $headers = [])
|
public function request(string $method, string $uri, array $data = [], array $headers = [])
|
||||||
{
|
{
|
||||||
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) {
|
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) {
|
||||||
throw new \InvalidArgumentException('Request method must be get, post, put, patch, or delete');
|
throw new \InvalidArgumentException('Request method must be get, post, put, patch, or delete');
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->client->$method($uri, [
|
try {
|
||||||
'headers' => $headers,
|
$response = $this->client->$method($uri, [
|
||||||
($method === 'get' ? 'query' : 'json') => $data,
|
'headers' => $headers,
|
||||||
]);
|
($method === 'get' ? 'query' : 'json') => $data,
|
||||||
|
]);
|
||||||
$this->checkError($response);
|
} catch (RequestException $err) {
|
||||||
|
throw ResponseException::fromRequestException($err);
|
||||||
|
}
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkError(ResponseInterface $response)
|
/**
|
||||||
{
|
* @SuppressWarnings(PHPMD.StaticAccess)
|
||||||
$json = json_decode($response->getBody());
|
*/
|
||||||
|
public function requestMultiPart(string $method, string $uri, array $data = [], array $headers = []) {
|
||||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) {
|
||||||
throw new JSONException();
|
throw new \InvalidArgumentException('Request method must be get, post, put, patch, or delete');
|
||||||
|
}
|
||||||
|
|
||||||
|
$multipart = [];
|
||||||
|
foreach( $data as $key => $value ) {
|
||||||
|
$multipart[] = [
|
||||||
|
'name' => $key,
|
||||||
|
'contents' => $value
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $this->client->$method($uri, [
|
||||||
|
'headers' => $headers,
|
||||||
|
'multipart' => $multipart
|
||||||
|
]);
|
||||||
|
} catch (RequestException $err) {
|
||||||
|
throw ResponseException::fromRequestException($err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($json->errors) && count($json->errors) >= 1) {
|
return $response;
|
||||||
throw new ResponseException($json->errors[0]->message, $json->errors[0]->code);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($json->success) && !$json->success) {
|
|
||||||
throw new ResponseException('Request was unsuccessful.');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,37 @@
|
|||||||
|
|
||||||
namespace Cloudflare\API\Adapter;
|
namespace Cloudflare\API\Adapter;
|
||||||
|
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
|
|
||||||
class ResponseException extends \Exception
|
class ResponseException extends \Exception
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Generates a ResponseException from a Guzzle RequestException.
|
||||||
|
*
|
||||||
|
* @param RequestException $err The client request exception (typicall 4xx or 5xx response).
|
||||||
|
* @return ResponseException
|
||||||
|
*/
|
||||||
|
public static function fromRequestException(RequestException $err): self
|
||||||
|
{
|
||||||
|
if (!$err->hasResponse()) {
|
||||||
|
return new ResponseException($err->getMessage(), 0, $err);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = $err->getResponse();
|
||||||
|
$contentType = $response->getHeaderLine('Content-Type');
|
||||||
|
|
||||||
|
// Attempt to derive detailed error from standard JSON response.
|
||||||
|
if (strpos($contentType, 'application/json') !== false) {
|
||||||
|
$json = json_decode($response->getBody());
|
||||||
|
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||||
|
return new ResponseException($err->getMessage(), 0, new JSONException(json_last_error_msg(), 0, $err));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($json->errors) && count($json->errors) >= 1) {
|
||||||
|
return new ResponseException($json->errors[0]->message, $json->errors[0]->code, $err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ResponseException($err->getMessage(), 0, $err);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
25
src/Auth/APIToken.php
Normal file
25
src/Auth/APIToken.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* User: czPechy
|
||||||
|
* Date: 30/07/2018
|
||||||
|
* Time: 22:42
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Auth;
|
||||||
|
|
||||||
|
class APIToken implements Auth
|
||||||
|
{
|
||||||
|
private $apiToken;
|
||||||
|
|
||||||
|
public function __construct(string $apiToken)
|
||||||
|
{
|
||||||
|
$this->apiToken = $apiToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getHeaders(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'Authorization' => 'Bearer ' . $this->apiToken
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,11 @@ class AccessRules implements Configurations
|
|||||||
$this->config = ['target' => 'country', 'value' => $value];
|
$this->config = ['target' => 'country', 'value' => $value];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setASN(string $value)
|
||||||
|
{
|
||||||
|
$this->config = ['target' => 'asn', 'value' => $value];
|
||||||
|
}
|
||||||
|
|
||||||
public function getArray(): array
|
public function getArray(): array
|
||||||
{
|
{
|
||||||
return $this->config;
|
return $this->config;
|
||||||
|
|||||||
58
src/Configurations/Certificate.php
Normal file
58
src/Configurations/Certificate.php
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Configurations;
|
||||||
|
|
||||||
|
class Certificate implements Configurations
|
||||||
|
{
|
||||||
|
const ORIGIN_RSA = 'origin-rsa';
|
||||||
|
const ORIGIN_ECC = 'origin-ecc';
|
||||||
|
const KEYLESS_CERTIFICATE = 'keyless-certificate';
|
||||||
|
|
||||||
|
private $config = [];
|
||||||
|
|
||||||
|
public function getArray(): array
|
||||||
|
{
|
||||||
|
return $this->config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of hostnames or wildcard names (e.g., *.example.com) bound to the certificate
|
||||||
|
* Example: $hostnames = ["example.com", "foo.example.com"]
|
||||||
|
* @param array $hostnames
|
||||||
|
*/
|
||||||
|
public function setHostnames(array $hostnames)
|
||||||
|
{
|
||||||
|
$this->config['hostnames'] = $hostnames;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of days for which the certificate should be valid
|
||||||
|
* Default value: 5475
|
||||||
|
* Valid values: 7, 30, 90, 365, 730, 1095, 5475
|
||||||
|
* @param int $validity
|
||||||
|
*/
|
||||||
|
public function setRequestedValidity(int $validity)
|
||||||
|
{
|
||||||
|
$this->config['requested_validity'] = $validity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signature type desired on certificate ("origin-rsa" (rsa), "origin-ecc" (ecdsa), or "keyless-certificate" (for Keyless SSL servers)
|
||||||
|
* Valid values: origin-rsa, origin-ecc, keyless-certificate
|
||||||
|
* @param string $type
|
||||||
|
*/
|
||||||
|
public function setRequestType(string $type)
|
||||||
|
{
|
||||||
|
$this->config['request_type'] = $type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Certificate Signing Request (CSR). Must be newline-encoded.
|
||||||
|
*
|
||||||
|
* @param string $csr
|
||||||
|
*/
|
||||||
|
public function setCsr(string $csr)
|
||||||
|
{
|
||||||
|
$this->config['csr'] = $csr;
|
||||||
|
}
|
||||||
|
}
|
||||||
69
src/Configurations/DNSAnalytics.php
Normal file
69
src/Configurations/DNSAnalytics.php
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Configurations;
|
||||||
|
|
||||||
|
class DNSAnalytics implements Configurations
|
||||||
|
{
|
||||||
|
protected $configs = [];
|
||||||
|
|
||||||
|
public function getArray(): array
|
||||||
|
{
|
||||||
|
return $this->configs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDimensions(array $dimensions)
|
||||||
|
{
|
||||||
|
if (count($dimensions) !== 0) {
|
||||||
|
$this->configs['dimensions'] = implode(',', $dimensions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setMetrics(array $metrics)
|
||||||
|
{
|
||||||
|
if (count($metrics) !== 0) {
|
||||||
|
$this->configs['metrics'] = implode(',', $metrics);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSince(string $since)
|
||||||
|
{
|
||||||
|
if ($since) {
|
||||||
|
$this->configs['since'] = $since;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUntil(string $until)
|
||||||
|
{
|
||||||
|
if ($until) {
|
||||||
|
$this->configs['until'] = $until;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSorting(array $sorting)
|
||||||
|
{
|
||||||
|
if (count($sorting) !== 0) {
|
||||||
|
$this->configs['sort'] = implode(',', $sorting);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFilters(string $filters)
|
||||||
|
{
|
||||||
|
if ($filters) {
|
||||||
|
$this->configs['filters'] = $filters;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLimit(int $limit)
|
||||||
|
{
|
||||||
|
if ($limit) {
|
||||||
|
$this->configs['limit'] = $limit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTimeDelta(string $timeDelta)
|
||||||
|
{
|
||||||
|
if ($timeDelta) {
|
||||||
|
$this->configs['time_delta'] = $timeDelta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
src/Configurations/FirewallRuleOptions.php
Normal file
46
src/Configurations/FirewallRuleOptions.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Configurations;
|
||||||
|
|
||||||
|
class FirewallRuleOptions implements Configurations
|
||||||
|
{
|
||||||
|
protected $configs = [
|
||||||
|
'paused' => false,
|
||||||
|
'action' => 'block'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function getArray(): array
|
||||||
|
{
|
||||||
|
return $this->configs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setPaused(bool $paused)
|
||||||
|
{
|
||||||
|
$this->configs['paused'] = $paused;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActionBlock()
|
||||||
|
{
|
||||||
|
$this->configs['action'] = 'block';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActionAllow()
|
||||||
|
{
|
||||||
|
$this->configs['action'] = 'allow';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActionChallenge()
|
||||||
|
{
|
||||||
|
$this->configs['action'] = 'challenge';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActionJsChallenge()
|
||||||
|
{
|
||||||
|
$this->configs['action'] = 'js_challenge';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActionLog()
|
||||||
|
{
|
||||||
|
$this->configs['action'] = 'log';
|
||||||
|
}
|
||||||
|
}
|
||||||
178
src/Configurations/LoadBalancer.php
Normal file
178
src/Configurations/LoadBalancer.php
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Configurations;
|
||||||
|
|
||||||
|
class LoadBalancer implements Configurations
|
||||||
|
{
|
||||||
|
private $configs = [];
|
||||||
|
|
||||||
|
public function __construct(string $name, array $defaultPools, string $fallbackPool)
|
||||||
|
{
|
||||||
|
$this->setName($name);
|
||||||
|
$this->setDefaultPools($defaultPools);
|
||||||
|
$this->setFallbackPool($fallbackPool);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setName(string $name)
|
||||||
|
{
|
||||||
|
$this->configs['name'] = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName():string
|
||||||
|
{
|
||||||
|
return $this->configs['name'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDefaultPools(array $defaultPools)
|
||||||
|
{
|
||||||
|
$this->configs['default_pools'] = $defaultPools;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDefaultPools():array
|
||||||
|
{
|
||||||
|
return $this->configs['default_pools'] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFallbackPool(string $fallbackPool)
|
||||||
|
{
|
||||||
|
$this->configs['fallback_pools'] = $fallbackPool;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFallbackPool():string
|
||||||
|
{
|
||||||
|
return $this->configs['fallback_pools'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSteeringPolicy(string $steeringPolicy = '')
|
||||||
|
{
|
||||||
|
$allowedOptions = ['off', 'geo', 'random', 'dynamic_latency', ''];
|
||||||
|
if (!in_array($steeringPolicy, $allowedOptions)) {
|
||||||
|
throw new ConfigurationsException('Given steering policy value is not a valid option, valid options are: ' . implode(', ', $allowedOptions));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->configs['steering_policy'] = $steeringPolicy;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSteeringPolicy():string
|
||||||
|
{
|
||||||
|
return $this->configs['steering_policy'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function enable()
|
||||||
|
{
|
||||||
|
$this->configs['enabled'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isEnabled():bool
|
||||||
|
{
|
||||||
|
return $this->configs['enabled'] ?? true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disable()
|
||||||
|
{
|
||||||
|
$this->configs['enabled'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isDisabled():bool
|
||||||
|
{
|
||||||
|
return !$this->configs['enabled'] ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEnabled():bool
|
||||||
|
{
|
||||||
|
return $this->configs['enabled'] ?? true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setPopPools(array $popPools)
|
||||||
|
{
|
||||||
|
$this->configs['pop_pools'] = $popPools;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPopPools():array
|
||||||
|
{
|
||||||
|
return $this->configs['pop_pools'] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTtl(int $ttl)
|
||||||
|
{
|
||||||
|
$this->configs['ttl'] = $ttl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTtl():int
|
||||||
|
{
|
||||||
|
return $this->configs['ttl'] ?? 30;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRegionPools(array $regionPools)
|
||||||
|
{
|
||||||
|
$this->configs['region_pools'] = $regionPools;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRegionPools():array
|
||||||
|
{
|
||||||
|
return $this->configs['region_pools'] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSessionAffinity(string $sessionAffinity = '')
|
||||||
|
{
|
||||||
|
$allowedOptions = ['none', 'cookie', 'ip_cookie', ''];
|
||||||
|
if (!in_array($sessionAffinity, $allowedOptions)) {
|
||||||
|
throw new ConfigurationsException('Given session affinity value is not a valid option, valid options are: ' . implode(', ', $allowedOptions));
|
||||||
|
}
|
||||||
|
$this->configs['session_affinity'] = $sessionAffinity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSessionAffinity():string
|
||||||
|
{
|
||||||
|
return $this->configs['session_affinity'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDescription(string $description = '')
|
||||||
|
{
|
||||||
|
$this->configs['description'] = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription():string
|
||||||
|
{
|
||||||
|
return $this->configs['description'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function enableProxied()
|
||||||
|
{
|
||||||
|
$this->configs['proxied'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disableProxied()
|
||||||
|
{
|
||||||
|
$this->configs['proxied'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isProxied():bool
|
||||||
|
{
|
||||||
|
return $this->configs['proxied'] ?? true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSessionAffinityTtl(int $sessionAffinityTtl = 82800)
|
||||||
|
{
|
||||||
|
if ($sessionAffinityTtl > 604800 || $sessionAffinityTtl < 1800) {
|
||||||
|
throw new ConfigurationsException('The value of session affinity ttl must be between 1800 and 604800');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->configs['session_affinity_ttl'] = $sessionAffinityTtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSessionAffinityTtl():int
|
||||||
|
{
|
||||||
|
return $this->configs['session_affinity_ttl'] ?? 82800;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getArray(): array
|
||||||
|
{
|
||||||
|
return $this->configs;
|
||||||
|
}
|
||||||
|
}
|
||||||
15
src/Configurations/PageRulesActions.php
Normal file → Executable file
15
src/Configurations/PageRulesActions.php
Normal file → Executable file
@@ -33,6 +33,13 @@ class PageRulesActions implements Configurations
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setOriginCacheControl(bool $active)
|
||||||
|
{
|
||||||
|
$this->addConfigurationOption('explicit_cache_control', [
|
||||||
|
'value' => $this->getBoolAsOnOrOff($active)
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function setBrowserIntegrityCheck(bool $active)
|
public function setBrowserIntegrityCheck(bool $active)
|
||||||
{
|
{
|
||||||
$this->addConfigurationOption('browser_check', [
|
$this->addConfigurationOption('browser_check', [
|
||||||
@@ -110,7 +117,7 @@ class PageRulesActions implements Configurations
|
|||||||
|
|
||||||
public function setEdgeCacheTTL(int $value)
|
public function setEdgeCacheTTL(int $value)
|
||||||
{
|
{
|
||||||
if ($value > 2419200) {
|
if ($value > 2678400) {
|
||||||
throw new ConfigurationsException('Edge Cache TTL too high.');
|
throw new ConfigurationsException('Edge Cache TTL too high.');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,10 +147,10 @@ class PageRulesActions implements Configurations
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setHostHeaderOverride(bool $active)
|
public function setHostHeaderOverride(string $value)
|
||||||
{
|
{
|
||||||
$this->addConfigurationOption('host_header_override', [
|
$this->addConfigurationOption('host_header_override', [
|
||||||
'value' => $this->getBoolAsOnOrOff($active)
|
'value' => $value
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,7 +205,7 @@ class PageRulesActions implements Configurations
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setResolveOverride(bool $value)
|
public function setResolveOverride(string $value)
|
||||||
{
|
{
|
||||||
$this->addConfigurationOption('resolve_override', [
|
$this->addConfigurationOption('resolve_override', [
|
||||||
'value' => $value
|
'value' => $value
|
||||||
|
|||||||
121
src/Configurations/Pool.php
Normal file
121
src/Configurations/Pool.php
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Configurations;
|
||||||
|
|
||||||
|
class Pool implements Configurations
|
||||||
|
{
|
||||||
|
private $configs = [];
|
||||||
|
|
||||||
|
public function __construct(string $name, array $origins)
|
||||||
|
{
|
||||||
|
$this->setName($name);
|
||||||
|
$this->setOrigins($origins);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setName(string $name)
|
||||||
|
{
|
||||||
|
$this->configs['name'] = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName():string
|
||||||
|
{
|
||||||
|
return $this->configs['name'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOrigins(array $origins)
|
||||||
|
{
|
||||||
|
foreach ($origins as $origin) {
|
||||||
|
if (!isset($origin['name'])) {
|
||||||
|
throw new ConfigurationsException('name is required for origin');
|
||||||
|
}
|
||||||
|
if (!isset($origin['address'])) {
|
||||||
|
throw new ConfigurationsException('address is required for origin');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->configs['origins'] = $origins;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOrigins():array
|
||||||
|
{
|
||||||
|
return $this->configs['origins'] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDescription(string $description = '')
|
||||||
|
{
|
||||||
|
$this->configs['description'] = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription():string
|
||||||
|
{
|
||||||
|
return $this->configs['description'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function enable()
|
||||||
|
{
|
||||||
|
$this->configs['enabled'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isEnabled():bool
|
||||||
|
{
|
||||||
|
return $this->configs['enabled'] ?? true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disable()
|
||||||
|
{
|
||||||
|
$this->configs['enabled'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isDisabled():bool
|
||||||
|
{
|
||||||
|
return !$this->configs['enabled'] ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEnabled():bool
|
||||||
|
{
|
||||||
|
return $this->configs['enabled'] ?? true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setMonitor(string $monitor)
|
||||||
|
{
|
||||||
|
$this->configs['monitor'] = $monitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMonitor():string
|
||||||
|
{
|
||||||
|
return $this->configs['monitor'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCheckRegions(array $checkRegions)
|
||||||
|
{
|
||||||
|
$this->configs['check_regions'] = $checkRegions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCheckRegions():array
|
||||||
|
{
|
||||||
|
return $this->configs['check_regions'] ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setNotificationEmail(string $email)
|
||||||
|
{
|
||||||
|
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
|
||||||
|
throw new ConfigurationsException('Invalid notification email given');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->configs['notification_email'] = $email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNotificationEmail():string
|
||||||
|
{
|
||||||
|
return $this->configs['notification_email'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getArray(): array
|
||||||
|
{
|
||||||
|
return $this->configs;
|
||||||
|
}
|
||||||
|
}
|
||||||
75
src/Endpoints/Accounts.php
Normal file
75
src/Endpoints/Accounts.php
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* User: kanasite
|
||||||
|
* Date: 01/28/2019
|
||||||
|
* Time: 10:00
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||||
|
|
||||||
|
class Accounts implements API
|
||||||
|
{
|
||||||
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function listAccounts(
|
||||||
|
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('accounts', $query);
|
||||||
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
|
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDomains(string $accountID): array
|
||||||
|
{
|
||||||
|
$response = $this->adapter->get('accounts/' . $accountID . '/registrar/domains');
|
||||||
|
|
||||||
|
$this->body = json_decode($response->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDomainDetails(string $accountID, string $domainName): \stdClass
|
||||||
|
{
|
||||||
|
$response = $this->adapter->get('accounts/' . $accountID . '/registrar/domains/' . $domainName);
|
||||||
|
|
||||||
|
$this->body = json_decode($response->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function lockDomain(string $accountID, string $domainName): \stdClass
|
||||||
|
{
|
||||||
|
$response = $this->adapter->put('accounts/' . $accountID . '/registrar/domains/' . $domainName, ['locked' => true]);
|
||||||
|
$this->body = json_decode($response->getBody());
|
||||||
|
return $this->body;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function unlockDomain(string $accountID, string $domainName): \stdClass
|
||||||
|
{
|
||||||
|
$response = $this->adapter->put('accounts/' . $accountID . '/registrar/domains/' . $domainName, ['locked' => false]);
|
||||||
|
$this->body = json_decode($response->getBody());
|
||||||
|
return $this->body;
|
||||||
|
}
|
||||||
|
}
|
||||||
86
src/Endpoints/Certificates.php
Normal file
86
src/Endpoints/Certificates.php
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Configurations\Certificate as CertificateConfig;
|
||||||
|
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||||
|
|
||||||
|
class Certificates implements API
|
||||||
|
{
|
||||||
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all existing Origin CA certificates for a given zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function listCertificates(string $zoneID): \stdClass
|
||||||
|
{
|
||||||
|
$certificates = $this->adapter->get('certificates', ['zone_id' => $zoneID]);
|
||||||
|
$this->body = json_decode($certificates->getBody());
|
||||||
|
|
||||||
|
return (object)['result' => $this->body->result];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an existing Origin CA certificate by its serial number
|
||||||
|
*
|
||||||
|
* @param string $certificateID
|
||||||
|
* @param string $zoneID
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getCertificate(string $certificateID, string $zoneID)
|
||||||
|
{
|
||||||
|
$certificates = $this->adapter->get('certificates/'.$certificateID, ['zone_id' => $zoneID]);
|
||||||
|
$this->body = json_decode($certificates->getBody());
|
||||||
|
|
||||||
|
return (object)['result' => $this->body->result];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Revoke an existing Origin CA certificate by its serial number
|
||||||
|
*
|
||||||
|
* @param string $certificateID
|
||||||
|
* @param string $zoneID
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function revokeCertificate(string $certificateID, string $zoneID): bool
|
||||||
|
{
|
||||||
|
$certificates = $this->adapter->delete('certificates/'.$certificateID, ['zone_id' => $zoneID]);
|
||||||
|
$this->body = json_decode($certificates->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an Origin CA certificate
|
||||||
|
*
|
||||||
|
* @param CertificateConfig $config
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function createCertificate(CertificateConfig $config): bool
|
||||||
|
{
|
||||||
|
$certificate = $this->adapter->post('certificates', $config->getArray());
|
||||||
|
|
||||||
|
$this->body = json_decode($certificate->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
95
src/Endpoints/Crypto.php
Normal file
95
src/Endpoints/Crypto.php
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
|
||||||
|
class Crypto implements API
|
||||||
|
{
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Opportunistic Encryption feature for a zone.
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getOpportunisticEncryptionSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/opportunistic_encryption'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Onion Routing feature for a zone.
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getOnionRoutingSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/opportunistic_onion'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Oppurtunistic Encryption setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateOpportunisticEncryptionSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/opportunistic_encryption',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Onion Routing setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateOnionRoutingSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/opportunistic_onion',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ use Cloudflare\API\Traits\BodyAccessorTrait;
|
|||||||
class CustomHostnames implements API
|
class CustomHostnames implements API
|
||||||
{
|
{
|
||||||
use BodyAccessorTrait;
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
private $adapter;
|
private $adapter;
|
||||||
|
|
||||||
public function __construct(Adapter $adapter)
|
public function __construct(Adapter $adapter)
|
||||||
@@ -30,18 +30,50 @@ class CustomHostnames implements API
|
|||||||
* @param string $hostname
|
* @param string $hostname
|
||||||
* @param string $sslMethod
|
* @param string $sslMethod
|
||||||
* @param string $sslType
|
* @param string $sslType
|
||||||
|
* @param array $sslSettings
|
||||||
|
* @param string $customOriginServer
|
||||||
|
* @param bool $wildcard
|
||||||
|
* @param string $bundleMethod
|
||||||
|
* @param array $customSsl
|
||||||
* @return \stdClass
|
* @return \stdClass
|
||||||
*/
|
*/
|
||||||
public function addHostname(string $zoneID, string $hostname, string $sslMethod = 'http', string $sslType = 'dv'): \stdClass
|
public function addHostname(
|
||||||
{
|
string $zoneID,
|
||||||
|
string $hostname,
|
||||||
|
string $sslMethod = 'http',
|
||||||
|
string $sslType = 'dv',
|
||||||
|
array $sslSettings = [],
|
||||||
|
string $customOriginServer = '',
|
||||||
|
bool $wildcard = false,
|
||||||
|
string $bundleMethod = '',
|
||||||
|
array $customSsl = []
|
||||||
|
): \stdClass {
|
||||||
$options = [
|
$options = [
|
||||||
'hostname' => $hostname,
|
'hostname' => $hostname,
|
||||||
'ssl' => [
|
'ssl' => [
|
||||||
'method' => $sslMethod,
|
'method' => $sslMethod,
|
||||||
'type' => $sslType
|
'type' => $sslType,
|
||||||
]
|
'settings' => $sslSettings,
|
||||||
|
'wildcard' => $wildcard,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (!empty($customOriginServer)) {
|
||||||
|
$options['custom_origin_server'] = $customOriginServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($bundleMethod)) {
|
||||||
|
$options['ssl']['bundle_method'] = $bundleMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($customSsl['key'])) {
|
||||||
|
$options['ssl']['custom_key'] = $customSsl['key'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($customSsl['certificate'])) {
|
||||||
|
$options['ssl']['custom_certificate'] = $customSsl['certificate'];
|
||||||
|
}
|
||||||
|
|
||||||
$zone = $this->adapter->post('zones/'.$zoneID.'/custom_hostnames', $options);
|
$zone = $this->adapter->post('zones/'.$zoneID.'/custom_hostnames', $options);
|
||||||
$this->body = json_decode($zone->getBody());
|
$this->body = json_decode($zone->getBody());
|
||||||
return $this->body->result;
|
return $this->body->result;
|
||||||
@@ -111,16 +143,33 @@ class CustomHostnames implements API
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||||
|
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
|
||||||
|
* @SuppressWarnings(PHPMD.NPathComplexity)
|
||||||
*
|
*
|
||||||
* @param string $zoneID
|
* @param string $zoneID
|
||||||
* @param string $hostnameID
|
* @param string $hostnameID
|
||||||
* @param string $sslMethod
|
* @param string $sslMethod
|
||||||
* @param string $sslType
|
* @param string $sslType
|
||||||
|
* @param array $sslSettings
|
||||||
|
* @param string $customOriginServer
|
||||||
|
* @param bool|null $wildcard
|
||||||
|
* @param string $bundleMethod
|
||||||
|
* @param array $customSsl
|
||||||
* @return \stdClass
|
* @return \stdClass
|
||||||
*/
|
*/
|
||||||
public function updateHostname(string $zoneID, string $hostnameID, string $sslMethod = '', string $sslType = ''): \stdClass
|
public function updateHostname(
|
||||||
{
|
string $zoneID,
|
||||||
|
string $hostnameID,
|
||||||
|
string $sslMethod = '',
|
||||||
|
string $sslType = '',
|
||||||
|
array $sslSettings = [],
|
||||||
|
string $customOriginServer = '',
|
||||||
|
bool $wildcard = null,
|
||||||
|
string $bundleMethod = '',
|
||||||
|
array $customSsl = []
|
||||||
|
): \stdClass {
|
||||||
$query = [];
|
$query = [];
|
||||||
|
$options = [];
|
||||||
|
|
||||||
if (!empty($sslMethod)) {
|
if (!empty($sslMethod)) {
|
||||||
$query['method'] = $sslMethod;
|
$query['method'] = $sslMethod;
|
||||||
@@ -130,9 +179,35 @@ class CustomHostnames implements API
|
|||||||
$query['type'] = $sslType;
|
$query['type'] = $sslType;
|
||||||
}
|
}
|
||||||
|
|
||||||
$options = [
|
if (!empty($sslSettings)) {
|
||||||
'ssl' => $query
|
$query['settings'] = $sslSettings;
|
||||||
];
|
}
|
||||||
|
|
||||||
|
if (!is_null($wildcard)) {
|
||||||
|
$query['wildcard'] = $wildcard;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($bundleMethod)) {
|
||||||
|
$query['bundle_method'] = $bundleMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($customSsl['key'])) {
|
||||||
|
$query['custom_key'] = $customSsl['key'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($customSsl['certificate'])) {
|
||||||
|
$query['custom_certificate'] = $customSsl['certificate'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($query)) {
|
||||||
|
$options = [
|
||||||
|
'ssl' => $query
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($customOriginServer)) {
|
||||||
|
$options['custom_origin_server'] = $customOriginServer;
|
||||||
|
}
|
||||||
|
|
||||||
$zone = $this->adapter->patch('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID, $options);
|
$zone = $this->adapter->patch('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID, $options);
|
||||||
$this->body = json_decode($zone->getBody());
|
$this->body = json_decode($zone->getBody());
|
||||||
@@ -150,4 +225,16 @@ class CustomHostnames implements API
|
|||||||
$this->body = json_decode($zone->getBody());
|
$this->body = json_decode($zone->getBody());
|
||||||
return $this->body;
|
return $this->body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @return \stdClass
|
||||||
|
*/
|
||||||
|
public function getFallbackOrigin(string $zoneID): \stdClass
|
||||||
|
{
|
||||||
|
$zone = $this->adapter->get('zones/'.$zoneID.'/custom_hostnames/fallback_origin');
|
||||||
|
$this->body = json_decode($zone->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class DNS implements API
|
|||||||
* @param bool $proxied
|
* @param bool $proxied
|
||||||
* @param string $priority
|
* @param string $priority
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return bool
|
* @return \stdClass
|
||||||
*/
|
*/
|
||||||
public function addRecord(
|
public function addRecord(
|
||||||
string $zoneID,
|
string $zoneID,
|
||||||
@@ -44,7 +44,7 @@ class DNS implements API
|
|||||||
bool $proxied = true,
|
bool $proxied = true,
|
||||||
string $priority = '',
|
string $priority = '',
|
||||||
array $data = []
|
array $data = []
|
||||||
): bool {
|
): \stdClass {
|
||||||
$options = [
|
$options = [
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
@@ -56,7 +56,7 @@ class DNS implements API
|
|||||||
$options['ttl'] = $ttl;
|
$options['ttl'] = $ttl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($priority)) {
|
if (is_numeric($priority)) {
|
||||||
$options['priority'] = (int)$priority;
|
$options['priority'] = (int)$priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,12 +67,23 @@ class DNS implements API
|
|||||||
$user = $this->adapter->post('zones/' . $zoneID . '/dns_records', $options);
|
$user = $this->adapter->post('zones/' . $zoneID . '/dns_records', $options);
|
||||||
|
|
||||||
$this->body = json_decode($user->getBody());
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
if (isset($this->body->result->id)) {
|
$result = $this->body->result;
|
||||||
return true;
|
|
||||||
|
if( !( $result instanceof \stdClass ) ) {
|
||||||
|
$errorMessage = '';
|
||||||
|
|
||||||
|
if( is_array( $result ) ) {
|
||||||
|
$errorMessage.= implode( $result );
|
||||||
|
|
||||||
|
} elseif( is_string( $result ) ) {
|
||||||
|
$errorMessage.= $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new EndpointException( sprintf( 'Unexpected add record result. %s', $errorMessage ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function listRecords(
|
public function listRecords(
|
||||||
@@ -125,6 +136,15 @@ class DNS implements API
|
|||||||
return $this->body->result;
|
return $this->body->result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getRecordID(string $zoneID, string $type = '', string $name = ''): string
|
||||||
|
{
|
||||||
|
$records = $this->listRecords($zoneID, $type, $name);
|
||||||
|
if (isset($records->result[0]->id)) {
|
||||||
|
return $records->result[0]->id;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public function updateRecordDetails(string $zoneID, string $recordID, array $details): \stdClass
|
public function updateRecordDetails(string $zoneID, string $recordID, array $details): \stdClass
|
||||||
{
|
{
|
||||||
$response = $this->adapter->put('zones/' . $zoneID . '/dns_records/' . $recordID, $details);
|
$response = $this->adapter->put('zones/' . $zoneID . '/dns_records/' . $recordID, $details);
|
||||||
|
|||||||
144
src/Endpoints/DNSAnalytics.php
Normal file
144
src/Endpoints/DNSAnalytics.php
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by Visual Studio Code.
|
||||||
|
* User: elliot.alderson
|
||||||
|
* Date: 2020-02-06
|
||||||
|
* Time: 03:40 AM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||||
|
use Cloudflare\API\Configurations\DNSAnalytics as Configs;
|
||||||
|
|
||||||
|
class DNSAnalytics implements API
|
||||||
|
{
|
||||||
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a list of summarised aggregate metrics over a given time period.
|
||||||
|
*
|
||||||
|
* @param string $zoneID ID of zone to get report for
|
||||||
|
* @param string $dimensions Comma separated names of dimensions
|
||||||
|
* @param string $metrics Comma separated names of dimension to get metrics for
|
||||||
|
* @param string $sort Comma separated names of dimension to sort by prefixed by order - (descending) or + (ascending)
|
||||||
|
* @param string $filters Segmentation filter in 'attribute operator value' format
|
||||||
|
* @param string $since Start date and time of requesting data period in the ISO8601 format
|
||||||
|
* @param string $until End date and time of requesting data period in the ISO8601 format
|
||||||
|
* @param string $limit Limit number of returned metrics
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getReportTable(
|
||||||
|
string $zoneID,
|
||||||
|
array $dimensions = [],
|
||||||
|
array $metrics = [],
|
||||||
|
array $sort = [],
|
||||||
|
string $filters = '',
|
||||||
|
string $since = '',
|
||||||
|
string $until = '',
|
||||||
|
int $limit = 100
|
||||||
|
): \stdClass {
|
||||||
|
if (count($dimensions) === 0) {
|
||||||
|
throw new EndpointException(
|
||||||
|
'At least one dimension is required for getting a report.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($metrics) === 0) {
|
||||||
|
throw new EndpointException(
|
||||||
|
'At least one metric is required for getting a report.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$since) {
|
||||||
|
throw new EndpointException(
|
||||||
|
'Start date is required for getting a report.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$until) {
|
||||||
|
throw new EndpointException(
|
||||||
|
'End date is required for getting a report.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$options = [
|
||||||
|
'dimensions' => implode(',', $dimensions),
|
||||||
|
'metrics' => implode(',', $metrics),
|
||||||
|
'since' => $since,
|
||||||
|
'until' => $until
|
||||||
|
];
|
||||||
|
|
||||||
|
if (count($sort) !== 0) {
|
||||||
|
$options['sort'] = implode(',', $sort);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($filters) {
|
||||||
|
$options['filters'] = $filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($limit) {
|
||||||
|
$options['limit'] = $limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$endpoint = 'zones/' . $zoneID . '/dns_analytics/report';
|
||||||
|
|
||||||
|
$report = $this->adapter->get($endpoint, $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($report->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a list of aggregate metrics grouped by time interval.
|
||||||
|
*
|
||||||
|
* @param string $zoneID ID of zone to get report for
|
||||||
|
* @param string $dimensions Comma separated names of dimensions
|
||||||
|
* @param string $metrics Comma separated names of dimension to get metrics for
|
||||||
|
* @param string $sort Comma separated names of dimension to sort by prefixed by order - (descending) or + (ascending)
|
||||||
|
* @param string $filters Segmentation filter in 'attribute operator value' format
|
||||||
|
* @param string $since Start date and time of requesting data period in the ISO8601 format
|
||||||
|
* @param string $until End date and time of requesting data period in the ISO8601 format
|
||||||
|
* @param string $limit Limit number of returned metrics
|
||||||
|
* @param string $timeDelta Unit of time to group data by
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getReportByTime(
|
||||||
|
string $zoneID,
|
||||||
|
array $dimensions = [],
|
||||||
|
array $metrics = [],
|
||||||
|
array $sort = [],
|
||||||
|
string $filters = '',
|
||||||
|
string $since = '',
|
||||||
|
string $until = '',
|
||||||
|
int $limit = 100,
|
||||||
|
string $timeDelta = ''
|
||||||
|
): \stdClass {
|
||||||
|
$options = new Configs();
|
||||||
|
$options->setDimensions($dimensions);
|
||||||
|
$options->setMetrics($metrics);
|
||||||
|
$options->setSince($since);
|
||||||
|
$options->setUntil($until);
|
||||||
|
$options->setSorting($sort);
|
||||||
|
$options->setFilters($filters);
|
||||||
|
$options->setLimit($limit);
|
||||||
|
$options->setTimeDelta($timeDelta);
|
||||||
|
|
||||||
|
$endpoint = 'zones/' . $zoneID . '/dns_analytics/report/bytime';
|
||||||
|
|
||||||
|
$report = $this->adapter->get($endpoint, $options->getArray());
|
||||||
|
|
||||||
|
$this->body = json_decode($report->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
}
|
||||||
120
src/Endpoints/Firewall.php
Normal file
120
src/Endpoints/Firewall.php
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Configurations\FirewallRuleOptions;
|
||||||
|
|
||||||
|
class Firewall implements API
|
||||||
|
{
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createFirewallRules(
|
||||||
|
string $zoneID,
|
||||||
|
array $rules
|
||||||
|
): bool {
|
||||||
|
$query = $this->adapter->post('zones/' . $zoneID . '/firewall/rules', $rules);
|
||||||
|
$body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
foreach ($body->result as $result) {
|
||||||
|
if (!isset($result->id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createFirewallRule(
|
||||||
|
string $zoneID,
|
||||||
|
string $expression,
|
||||||
|
FirewallRuleOptions $options,
|
||||||
|
string $description = null,
|
||||||
|
int $priority = null
|
||||||
|
): bool {
|
||||||
|
$rule = array_merge([
|
||||||
|
'filter' => [
|
||||||
|
'expression' => $expression,
|
||||||
|
'paused' => false
|
||||||
|
]
|
||||||
|
], $options->getArray());
|
||||||
|
|
||||||
|
if ($description !== null) {
|
||||||
|
$rule['description'] = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($priority !== null) {
|
||||||
|
$rule['priority'] = $priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->createFirewallRules($zoneID, [$rule]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function listFirewallRules(
|
||||||
|
string $zoneID,
|
||||||
|
int $page = 1,
|
||||||
|
int $perPage = 50
|
||||||
|
): \stdClass {
|
||||||
|
$query = [
|
||||||
|
'page' => $page,
|
||||||
|
'per_page' => $perPage,
|
||||||
|
];
|
||||||
|
|
||||||
|
$rules = $this->adapter->get('zones/' . $zoneID . '/firewall/rules', $query);
|
||||||
|
$body = json_decode($rules->getBody());
|
||||||
|
|
||||||
|
return (object)['result' => $body->result, 'result_info' => $body->result_info];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteFirewallRule(
|
||||||
|
string $zoneID,
|
||||||
|
string $ruleID
|
||||||
|
): bool {
|
||||||
|
$rule = $this->adapter->delete('zones/' . $zoneID . '/firewall/rules/' . $ruleID);
|
||||||
|
|
||||||
|
$body = json_decode($rule->getBody());
|
||||||
|
|
||||||
|
if (isset($body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateFirewallRule(
|
||||||
|
string $zoneID,
|
||||||
|
string $ruleID,
|
||||||
|
string $filterID,
|
||||||
|
string $expression,
|
||||||
|
FirewallRuleOptions $options,
|
||||||
|
string $description = null,
|
||||||
|
int $priority = null
|
||||||
|
): \stdClass {
|
||||||
|
$rule = array_merge([
|
||||||
|
'id' => $ruleID,
|
||||||
|
'filter' => [
|
||||||
|
'id' => $filterID,
|
||||||
|
'expression' => $expression,
|
||||||
|
'paused' => false
|
||||||
|
]
|
||||||
|
], $options->getArray());
|
||||||
|
|
||||||
|
if ($description !== null) {
|
||||||
|
$rule['description'] = $description;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($priority !== null) {
|
||||||
|
$rule['priority'] = $priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rule = $this->adapter->put('zones/' . $zoneID . '/firewall/rules/' . $ruleID, $rule);
|
||||||
|
$body = json_decode($rule->getBody());
|
||||||
|
|
||||||
|
return $body->result;
|
||||||
|
}
|
||||||
|
}
|
||||||
135
src/Endpoints/FirewallSettings.php
Normal file
135
src/Endpoints/FirewallSettings.php
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
|
||||||
|
class FirewallSettings implements API
|
||||||
|
{
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Security Level feature for a zone.
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getSecurityLevelSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/security_level'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Challenge TTL feature for a zone.
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return integer|false
|
||||||
|
*/
|
||||||
|
public function getChallengeTTLSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/challenge_ttl'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Browser Integrity Check feature for a zone.
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getBrowserIntegrityCheckSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/browser_check'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Security Level setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateSecurityLevelSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/security_level',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Challenge TTL setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param int $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateChallengeTTLSetting(string $zoneID, int $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/challenge_ttl',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Browser Integrity Check setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateBrowserIntegrityCheckSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/browser_check',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
157
src/Endpoints/LoadBalancers.php
Normal file
157
src/Endpoints/LoadBalancers.php
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Configurations\ConfigurationsException;
|
||||||
|
use Cloudflare\API\Configurations\LoadBalancer;
|
||||||
|
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||||
|
|
||||||
|
class LoadBalancers implements API
|
||||||
|
{
|
||||||
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function listLoadBalancers(string $zoneID)
|
||||||
|
{
|
||||||
|
$loadBalancers = $this->adapter->get('zones/' . $zoneID . '/load_balancers');
|
||||||
|
$this->body = json_decode($loadBalancers->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param string $loadBalancerID
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getLoadBalancerDetails(string $zoneID, string $loadBalancerID)
|
||||||
|
{
|
||||||
|
$loadBalancer = $this->adapter->get('zones/' . $zoneID . '/load_balancers/' . $loadBalancerID);
|
||||||
|
$this->body = json_decode($loadBalancer->getBody());
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param string $loadBalancerID
|
||||||
|
* @return LoadBalancer
|
||||||
|
* @throws ConfigurationsException
|
||||||
|
*/
|
||||||
|
public function getLoadBalancerConfiguration(string $zoneID, string $loadBalancerID)
|
||||||
|
{
|
||||||
|
$loadBalancer = $this->getLoadBalancerDetails($zoneID, $loadBalancerID);
|
||||||
|
|
||||||
|
$lbConfiguration = new LoadBalancer($loadBalancer->name, $loadBalancer->default_pools, $loadBalancer->fallback_pool);
|
||||||
|
$lbConfiguration->setSteeringPolicy($loadBalancer->steering_policy);
|
||||||
|
if ($loadBalancer->enabled === true) {
|
||||||
|
$lbConfiguration->enable();
|
||||||
|
} elseif ($loadBalancer->enabled === false) {
|
||||||
|
$lbConfiguration->disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($loadBalancer->pop_pools)) {
|
||||||
|
$lbConfiguration->setPopPools($loadBalancer->pop_pools);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($loadBalancer->ttl)) {
|
||||||
|
$lbConfiguration->setTtl($loadBalancer->ttl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($loadBalancer->region_pools)) {
|
||||||
|
$lbConfiguration->setRegionPools($loadBalancer->region_pools);
|
||||||
|
}
|
||||||
|
$lbConfiguration->setSessionAffinity($loadBalancer->session_affinity);
|
||||||
|
$lbConfiguration->setDescription($loadBalancer->description);
|
||||||
|
if ($loadBalancer->proxied === true) {
|
||||||
|
$lbConfiguration->enableProxied();
|
||||||
|
} elseif ($loadBalancer->proxied === false) {
|
||||||
|
$lbConfiguration->disableProxied();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($loadBalancer->session_affinity_ttl)) {
|
||||||
|
$lbConfiguration->setSessionAffinityTtl($loadBalancer->session_affinity_ttl);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $lbConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param string $loadBalancerID
|
||||||
|
* @param LoadBalancer $lbConfiguration
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateLoadBalancer(
|
||||||
|
string $zoneID,
|
||||||
|
string $loadBalancerID,
|
||||||
|
LoadBalancer $lbConfiguration
|
||||||
|
): bool {
|
||||||
|
$options = $lbConfiguration->getArray();
|
||||||
|
|
||||||
|
$query = $this->adapter->put('zones/' . $zoneID . '/load_balancers/' . $loadBalancerID, $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param LoadBalancer $lbConfiguration
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function createLoadBalancer(
|
||||||
|
string $zoneID,
|
||||||
|
LoadBalancer $lbConfiguration
|
||||||
|
): bool {
|
||||||
|
$options = $lbConfiguration->getArray();
|
||||||
|
|
||||||
|
$query = $this->adapter->post('zones/' . $zoneID . '/load_balancers', $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zoneID
|
||||||
|
* @param string $loadBalancerID
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deleteLoadBalancer(string $zoneID, string $loadBalancerID): bool
|
||||||
|
{
|
||||||
|
$loadBalancer = $this->adapter->delete('zones/' . $zoneID . '/load_balancers/' . $loadBalancerID);
|
||||||
|
|
||||||
|
$this->body = json_decode($loadBalancer->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -73,19 +73,19 @@ class PageRules implements API
|
|||||||
string $direction = null,
|
string $direction = null,
|
||||||
string $match = null
|
string $match = null
|
||||||
): array {
|
): array {
|
||||||
if ($status === null && !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.');
|
throw new EndpointException('Page Rules can only be listed by status of active or disabled.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($order === null && !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.');
|
throw new EndpointException('Page Rules can only be ordered by status or priority.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($direction === null && !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.');
|
throw new EndpointException('Direction of Page Rule ordering can only be asc or desc.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($match === null && !in_array($match, ['all', 'any'])) {
|
if ($match != null && !in_array($match, ['all', 'any'])) {
|
||||||
throw new EndpointException('Match can only be any or all.');
|
throw new EndpointException('Match can only be any or all.');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,8 +109,40 @@ class PageRules implements API
|
|||||||
return $this->body->result;
|
return $this->body->result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function editPageRule(
|
||||||
|
string $zoneID,
|
||||||
|
string $ruleID,
|
||||||
|
PageRulesTargets $target,
|
||||||
|
PageRulesActions $actions,
|
||||||
|
bool $active = null,
|
||||||
|
int $priority = null
|
||||||
|
): bool {
|
||||||
|
$options = [];
|
||||||
|
$options['targets'] = $target->getArray();
|
||||||
|
$options['actions'] = $actions->getArray();
|
||||||
|
|
||||||
|
if ($active !== null) {
|
||||||
|
$options['status'] = $active == true ? 'active' : 'disabled';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($priority !== null) {
|
||||||
|
$options['priority'] = $priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = $this->adapter->put('zones/' . $zoneID . '/pagerules/' . $ruleID, $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public function updatePageRule(
|
public function updatePageRule(
|
||||||
string $zoneID,
|
string $zoneID,
|
||||||
|
string $ruleID,
|
||||||
PageRulesTargets $target = null,
|
PageRulesTargets $target = null,
|
||||||
PageRulesActions $actions = null,
|
PageRulesActions $actions = null,
|
||||||
bool $active = null,
|
bool $active = null,
|
||||||
@@ -134,8 +166,7 @@ class PageRules implements API
|
|||||||
$options['priority'] = $priority;
|
$options['priority'] = $priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$query = $this->adapter->patch('zones/' . $zoneID . '/pagerules/' . $ruleID, $options);
|
||||||
$query = $this->adapter->patch('zones/' . $zoneID . '/pagerules', $options);
|
|
||||||
|
|
||||||
$this->body = json_decode($query->getBody());
|
$this->body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
|||||||
156
src/Endpoints/Pools.php
Normal file
156
src/Endpoints/Pools.php
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Configurations\ConfigurationsException;
|
||||||
|
use Cloudflare\API\Configurations\Pool;
|
||||||
|
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||||
|
|
||||||
|
class Pools implements API
|
||||||
|
{
|
||||||
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function listPools(string $accountID)
|
||||||
|
{
|
||||||
|
$pools = $this->adapter->get('accounts/' . $accountID . '/load_balancers/pools');
|
||||||
|
$this->body = json_decode($pools->getBody());
|
||||||
|
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @param string $poolID
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getPoolDetails(string $accountID, string $poolID)
|
||||||
|
{
|
||||||
|
$pool = $this->adapter->get('accounts/' . $accountID . '/load_balancers/pools/' . $poolID);
|
||||||
|
$this->body = json_decode($pool->getBody());
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @param string $poolID
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getPoolHealthDetails(string $accountID, string $poolID)
|
||||||
|
{
|
||||||
|
$pool = $this->adapter->get('accounts/' . $accountID . '/load_balancers/pools/' . $poolID . '/health');
|
||||||
|
$this->body = json_decode($pool->getBody());
|
||||||
|
return $this->body->result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @param string $poolID
|
||||||
|
* @return Pool
|
||||||
|
* @throws ConfigurationsException
|
||||||
|
*/
|
||||||
|
public function getPoolConfiguration(string $accountID, string $poolID)
|
||||||
|
{
|
||||||
|
$pool = $this->getPoolDetails($accountID, $poolID);
|
||||||
|
|
||||||
|
$origins = [];
|
||||||
|
foreach ($pool->origins as $origin) {
|
||||||
|
$origins[] = (array)$origin;
|
||||||
|
}
|
||||||
|
$poolConfiguration = new Pool($pool->name, $origins);
|
||||||
|
$poolConfiguration->setDescription($pool->description);
|
||||||
|
if ($pool->enabled === true) {
|
||||||
|
$poolConfiguration->enable();
|
||||||
|
} elseif ($pool->enabled === false) {
|
||||||
|
$poolConfiguration->disable();
|
||||||
|
}
|
||||||
|
$poolConfiguration->setMonitor($pool->monitor);
|
||||||
|
$poolConfiguration->setNotificationEmail($pool->notification_email);
|
||||||
|
|
||||||
|
if (is_array($pool->check_regions)) {
|
||||||
|
$poolConfiguration->setCheckRegions($pool->check_regions);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $poolConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @param string $poolID
|
||||||
|
* @param Pool $poolConfiguration
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updatePool(
|
||||||
|
string $accountID,
|
||||||
|
string $poolID,
|
||||||
|
Pool $poolConfiguration
|
||||||
|
): bool {
|
||||||
|
$options = $poolConfiguration->getArray();
|
||||||
|
|
||||||
|
$query = $this->adapter->put('accounts/' . $accountID . '/load_balancers/pools/' . $poolID, $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @param Pool $poolConfiguration
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function createPool(
|
||||||
|
string $accountID,
|
||||||
|
Pool $poolConfiguration
|
||||||
|
): bool {
|
||||||
|
$options = $poolConfiguration->getArray();
|
||||||
|
|
||||||
|
$query = $this->adapter->post('accounts/' . $accountID . '/load_balancers/pools', $options);
|
||||||
|
|
||||||
|
$this->body = json_decode($query->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $accountID
|
||||||
|
* @param string $poolID
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deletePool(string $accountID, string $poolID): bool
|
||||||
|
{
|
||||||
|
$pool = $this->adapter->delete('accounts/' . $accountID . '/load_balancers/pools/' . $poolID);
|
||||||
|
|
||||||
|
$this->body = json_decode($pool->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
183
src/Endpoints/SSL.php
Normal file
183
src/Endpoints/SSL.php
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
|
||||||
|
class SSL implements API
|
||||||
|
{
|
||||||
|
private $adapter;
|
||||||
|
|
||||||
|
public function __construct(Adapter $adapter)
|
||||||
|
{
|
||||||
|
$this->adapter = $adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the SSL setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getSSLSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/ssl'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
|
||||||
|
*
|
||||||
|
* Get SSL Verification Info for a Zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param bool $retry Immediately retry SSL Verification
|
||||||
|
* @return array|false
|
||||||
|
*/
|
||||||
|
public function getSSLVerificationStatus(string $zoneID, bool $retry = false)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/ssl/verification',
|
||||||
|
[
|
||||||
|
'retry' => $retry
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the HTTPS Redirect setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getHTTPSRedirectSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/always_use_https'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the HTTPS Rewrite setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getHTTPSRewritesSetting(string $zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/automatic_https_rewrites'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the SSL setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateSSLSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/ssl',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the HTTPS Redirect setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateHTTPSRedirectSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/always_use_https',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the HTTPS Rewrite setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateHTTPSRewritesSetting(string $zoneID, string $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/automatic_https_rewrites',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the SSL certificate pack validation method
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $certPackUUID The certificate pack UUID
|
||||||
|
* @param string $validationMethod The verification method
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateSSLCertificatePackValidationMethod(string $zoneID, string $certPackUUID, string $validationMethod)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/ssl/verification/' . $certPackUUID,
|
||||||
|
[
|
||||||
|
'validation_method' => $validationMethod,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,52 +19,103 @@ class TLS implements API
|
|||||||
$this->adapter = $adapter;
|
$this->adapter = $adapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the TLS Client Auth setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public function getTLSClientAuth($zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/tls_client_auth'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->result)) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable TLS 1.3 for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function enableTLS13($zoneID)
|
public function enableTLS13($zoneID)
|
||||||
{
|
{
|
||||||
$return = $this->adapter->patch(
|
$return = $this->adapter->patch(
|
||||||
'zones/' . $zoneID . '/settings/tls_1_3',
|
'zones/' . $zoneID . '/settings/tls_1_3',
|
||||||
['value' => 'on']
|
['value' => 'on']
|
||||||
);
|
);
|
||||||
$body = json_decode($return->getBody());
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
if ($body->success) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable TLS 1.3 for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function disableTLS13($zoneID)
|
public function disableTLS13($zoneID)
|
||||||
{
|
{
|
||||||
$return = $this->adapter->patch(
|
$return = $this->adapter->patch(
|
||||||
'zones/' . $zoneID . '/settings/tls_1_3',
|
'zones/' . $zoneID . '/settings/tls_1_3',
|
||||||
['value' => 'off']
|
['value' => 'off']
|
||||||
);
|
);
|
||||||
$body = json_decode($return->getBody());
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
if ($body->success) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the minimum TLS version setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $minimumVersion The version to update to
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function changeMinimumTLSVersion($zoneID, $minimumVersion)
|
public function changeMinimumTLSVersion($zoneID, $minimumVersion)
|
||||||
{
|
{
|
||||||
$return = $this->adapter->patch(
|
$return = $this->adapter->patch(
|
||||||
'zones/' . $zoneID . '/settings/min_tls_version',
|
'zones/' . $zoneID . '/settings/min_tls_version',
|
||||||
[
|
[
|
||||||
'value' => $minimumVersion
|
'value' => $minimumVersion,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
$body = json_decode($return->getBody());
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
if ($body->success) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the TLS Client Auth setting for the zone
|
||||||
|
*
|
||||||
|
* @param string $zoneID The ID of the zone
|
||||||
|
* @param string $value The value of the zone setting
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateTLSClientAuth($zoneID, $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/tls_client_auth',
|
||||||
|
[
|
||||||
|
'value' => $value,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
if (isset($body->success) && $body->success == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
245
src/Endpoints/ZoneSettings.php
Normal file
245
src/Endpoints/ZoneSettings.php
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: paul.adams
|
||||||
|
* Date: 2019-02-22
|
||||||
|
* Time: 23:28
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Cloudflare\API\Endpoints;
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Traits\BodyAccessorTrait;
|
||||||
|
|
||||||
|
class ZoneSettings implements API
|
||||||
|
{
|
||||||
|
use BodyAccessorTrait;
|
||||||
|
|
||||||
|
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 getServerSideExcludeSetting($zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/server_side_exclude'
|
||||||
|
);
|
||||||
|
$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 getBrowserCacheTtlSetting($zoneID)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->get(
|
||||||
|
'zones/' . $zoneID . '/settings/browser_cache_ttl'
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
|
||||||
|
if ($body->success) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateBrowserCacheTtlSetting($zoneID, $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/browser_cache_ttl',
|
||||||
|
[
|
||||||
|
'value' => $value
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
|
||||||
|
if ($body->success) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateServerSideExcludeSetting($zoneID, $value)
|
||||||
|
{
|
||||||
|
$return = $this->adapter->patch(
|
||||||
|
'zones/' . $zoneID . '/settings/server_side_exclude',
|
||||||
|
[
|
||||||
|
'value' => $value
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$body = json_decode($return->getBody());
|
||||||
|
|
||||||
|
if ($body->success) {
|
||||||
|
return $body->result->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -58,6 +58,39 @@ class Zones implements API
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function pause(string $zoneID): bool
|
||||||
|
{
|
||||||
|
$user = $this->adapter->patch('zones/' . $zoneID, ['paused' => true]);
|
||||||
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function unpause(string $zoneID): bool
|
||||||
|
{
|
||||||
|
$user = $this->adapter->patch('zones/' . $zoneID, ['paused' => false]);
|
||||||
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
|
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(
|
public function listZones(
|
||||||
string $name = '',
|
string $name = '',
|
||||||
string $status = '',
|
string $status = '',
|
||||||
@@ -144,6 +177,38 @@ class Zones implements API
|
|||||||
return false;
|
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
|
* Purge Everything
|
||||||
@@ -152,7 +217,7 @@ class Zones implements API
|
|||||||
*/
|
*/
|
||||||
public function cachePurgeEverything(string $zoneID): bool
|
public function cachePurgeEverything(string $zoneID): bool
|
||||||
{
|
{
|
||||||
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', ['purge_everything' => true]);
|
$user = $this->adapter->post('zones/' . $zoneID . '/purge_cache', ['purge_everything' => true]);
|
||||||
|
|
||||||
$this->body = json_decode($user->getBody());
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
@@ -182,7 +247,7 @@ class Zones implements API
|
|||||||
$options['hosts'] = $hosts;
|
$options['hosts'] = $hosts;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', $options);
|
$user = $this->adapter->post('zones/' . $zoneID . '/purge_cache', $options);
|
||||||
|
|
||||||
$this->body = json_decode($user->getBody());
|
$this->body = json_decode($user->getBody());
|
||||||
|
|
||||||
@@ -192,4 +257,18 @@ class Zones implements API
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete Zone
|
||||||
|
*/
|
||||||
|
public function deleteZone(string $identifier): bool
|
||||||
|
{
|
||||||
|
$user = $this->adapter->delete('zones/' . $identifier);
|
||||||
|
$this->body = json_decode($user->getBody());
|
||||||
|
if (isset($this->body->result->id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
use Cloudflare\API\Adapter\ResponseException;
|
||||||
* User: junade
|
|
||||||
* Date: 13/01/2017
|
|
||||||
* Time: 23:35
|
|
||||||
*/
|
|
||||||
|
|
||||||
use GuzzleHttp\Psr7\Response;
|
|
||||||
|
|
||||||
class GuzzleTest extends TestCase
|
class GuzzleTest extends TestCase
|
||||||
{
|
{
|
||||||
@@ -89,48 +83,15 @@ class GuzzleTest extends TestCase
|
|||||||
$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()
|
|
||||||
{
|
|
||||||
$class = new ReflectionClass(\Cloudflare\API\Adapter\Guzzle::class);
|
|
||||||
$method = $class->getMethod('checkError');
|
|
||||||
$method->setAccessible(true);
|
|
||||||
|
|
||||||
$body =
|
|
||||||
'{
|
|
||||||
"result": null,
|
|
||||||
"success": false,
|
|
||||||
"errors": [{"code":1003,"message":"Invalid or missing zone id."}],
|
|
||||||
"messages": []
|
|
||||||
}'
|
|
||||||
;
|
|
||||||
$response = new Response(200, [], $body);
|
|
||||||
|
|
||||||
$this->expectException(\Cloudflare\API\Adapter\ResponseException::class);
|
|
||||||
$method->invokeArgs($this->client, [$response]);
|
|
||||||
|
|
||||||
$body =
|
|
||||||
'{
|
|
||||||
"result": null,
|
|
||||||
"success": false,
|
|
||||||
"errors": [],
|
|
||||||
"messages": []
|
|
||||||
}'
|
|
||||||
;
|
|
||||||
$response = new Response(200, [], $body);
|
|
||||||
|
|
||||||
$this->expectException(\Cloudflare\API\Adapter\ResponseException::class);
|
|
||||||
$method->invokeArgs($this->client, [$response]);
|
|
||||||
|
|
||||||
$body = 'this isnt json.';
|
|
||||||
$response = new Response(200, [], $body);
|
|
||||||
|
|
||||||
$this->expectException(\Cloudflare\API\Adapter\JSONException::class);
|
|
||||||
$method->invokeArgs($this->client, [$response]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testNotFound()
|
public function testNotFound()
|
||||||
{
|
{
|
||||||
$this->expectException(\GuzzleHttp\Exception\RequestException::class);
|
$this->expectException(ResponseException::class);
|
||||||
$this->client->get('https://httpbin.org/status/404');
|
$this->client->get('https://httpbin.org/status/404');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testServerError()
|
||||||
|
{
|
||||||
|
$this->expectException(ResponseException::class);
|
||||||
|
$this->client->get('https://httpbin.org/status/500');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
81
tests/Adapter/ResponseExceptionTest.php
Normal file
81
tests/Adapter/ResponseExceptionTest.php
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\ResponseException;
|
||||||
|
use Cloudflare\API\Adapter\JSONException;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
|
use GuzzleHttp\Psr7\Request;
|
||||||
|
use GuzzleHttp\Psr7\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @SuppressWarnings(PHPMD.StaticAccess)
|
||||||
|
*/
|
||||||
|
class ResponseExceptionTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testFromRequestExceptionNoResponse()
|
||||||
|
{
|
||||||
|
$reqErr = new RequestException('foo', new Request('GET', '/test'));
|
||||||
|
$respErr = ResponseException::fromRequestException($reqErr);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ResponseException::class, $respErr);
|
||||||
|
$this->assertEquals($reqErr->getMessage(), $respErr->getMessage());
|
||||||
|
$this->assertEquals(0, $respErr->getCode());
|
||||||
|
$this->assertEquals($reqErr, $respErr->getPrevious());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFromRequestExceptionEmptyContentType()
|
||||||
|
{
|
||||||
|
$resp = new Response(404);
|
||||||
|
$reqErr = new RequestException('foo', new Request('GET', '/test'), $resp);
|
||||||
|
$respErr = ResponseException::fromRequestException($reqErr);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ResponseException::class, $respErr);
|
||||||
|
$this->assertEquals($reqErr->getMessage(), $respErr->getMessage());
|
||||||
|
$this->assertEquals(0, $respErr->getCode());
|
||||||
|
$this->assertEquals($reqErr, $respErr->getPrevious());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testFromRequestExceptionUnknownContentType()
|
||||||
|
{
|
||||||
|
$resp = new Response(404, ['Content-Type' => ['application/octet-stream']]);
|
||||||
|
$reqErr = new RequestException('foo', new Request('GET', '/test'), $resp);
|
||||||
|
$respErr = ResponseException::fromRequestException($reqErr);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ResponseException::class, $respErr);
|
||||||
|
$this->assertEquals($reqErr->getMessage(), $respErr->getMessage());
|
||||||
|
$this->assertEquals(0, $respErr->getCode());
|
||||||
|
$this->assertEquals($reqErr, $respErr->getPrevious());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFromRequestExceptionJSONDecodeError()
|
||||||
|
{
|
||||||
|
$resp = new Response(404, ['Content-Type' => ['application/json; charset=utf-8']], '[what]');
|
||||||
|
$reqErr = new RequestException('foo', new Request('GET', '/test'), $resp);
|
||||||
|
$respErr = ResponseException::fromRequestException($reqErr);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ResponseException::class, $respErr);
|
||||||
|
$this->assertEquals($reqErr->getMessage(), $respErr->getMessage());
|
||||||
|
$this->assertEquals(0, $respErr->getCode());
|
||||||
|
$this->assertInstanceOf(JSONException::class, $respErr->getPrevious());
|
||||||
|
$this->assertEquals($reqErr, $respErr->getPrevious()->getPrevious());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFromRequestExceptionJSONWithErrors()
|
||||||
|
{
|
||||||
|
$body = '{
|
||||||
|
"result": null,
|
||||||
|
"success": false,
|
||||||
|
"errors": [{"code":1003, "message":"This is an error"}],
|
||||||
|
"messages": []
|
||||||
|
}';
|
||||||
|
|
||||||
|
$resp = new Response(404, ['Content-Type' => ['application/json; charset=utf-8']], $body);
|
||||||
|
$reqErr = new RequestException('foo', new Request('GET', '/test'), $resp);
|
||||||
|
$respErr = ResponseException::fromRequestException($reqErr);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ResponseException::class, $respErr);
|
||||||
|
$this->assertEquals('This is an error', $respErr->getMessage());
|
||||||
|
$this->assertEquals(1003, $respErr->getCode());
|
||||||
|
$this->assertEquals($reqErr, $respErr->getPrevious());
|
||||||
|
}
|
||||||
|
}
|
||||||
21
tests/Auth/APITokenTest.php
Normal file
21
tests/Auth/APITokenTest.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User: czPechy
|
||||||
|
* Date: 30/07/2018
|
||||||
|
* Time: 23:25
|
||||||
|
*/
|
||||||
|
class APITokenTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetHeaders()
|
||||||
|
{
|
||||||
|
$auth = new \Cloudflare\API\Auth\APIToken('zKq9RDO6PbCjs6PRUXF3BoqFi3QdwY36C2VfOaRy');
|
||||||
|
$headers = $auth->getHeaders();
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('Authorization', $headers);
|
||||||
|
|
||||||
|
$this->assertEquals('Bearer zKq9RDO6PbCjs6PRUXF3BoqFi3QdwY36C2VfOaRy', $headers['Authorization']);
|
||||||
|
|
||||||
|
$this->assertCount(1, $headers);
|
||||||
|
}
|
||||||
|
}
|
||||||
22
tests/Configurations/CertificateTest.php
Normal file
22
tests/Configurations/CertificateTest.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Cloudflare\API\Configurations\Certificate;
|
||||||
|
|
||||||
|
class CertificateTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetArray()
|
||||||
|
{
|
||||||
|
$certificate = new Certificate();
|
||||||
|
$certificate->setHostnames(['foo.com', '*.bar.com']);
|
||||||
|
$certificate->setRequestType(Certificate::ORIGIN_ECC);
|
||||||
|
$certificate->setRequestedValidity(365);
|
||||||
|
$certificate->setCsr('some-csr-encoded-text');
|
||||||
|
|
||||||
|
$array = $certificate->getArray();
|
||||||
|
$this->assertEquals(['foo.com', '*.bar.com'], $array['hostnames']);
|
||||||
|
$this->assertEquals('origin-ecc', $array['request_type']);
|
||||||
|
$this->assertEquals(365, $array['requested_validity']);
|
||||||
|
$this->assertEquals('some-csr-encoded-text', $array['csr']);
|
||||||
|
}
|
||||||
|
}
|
||||||
56
tests/Configurations/LoadBalancerTest.php
Normal file
56
tests/Configurations/LoadBalancerTest.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Cloudflare\API\Configurations\ConfigurationsException;
|
||||||
|
use Cloudflare\API\Configurations\LoadBalancer;
|
||||||
|
|
||||||
|
class LoadBalancerTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider testArgumentsDataProvider
|
||||||
|
*/
|
||||||
|
public function testArguments($setFunction, $arguments, $getFunction, $invalid)
|
||||||
|
{
|
||||||
|
$loadBalancer = new LoadBalancer('bogus', [], 'bogus');
|
||||||
|
foreach ($arguments as $argument) {
|
||||||
|
if ($invalid === true) {
|
||||||
|
try {
|
||||||
|
$loadBalancer->{$setFunction}($argument);
|
||||||
|
} catch (ConfigurationsException $e) {
|
||||||
|
$this->assertNotEquals($argument, $loadBalancer->{$getFunction}());
|
||||||
|
}
|
||||||
|
} elseif ($invalid === false) {
|
||||||
|
$loadBalancer->{$setFunction}($argument);
|
||||||
|
$this->assertEquals($argument, $loadBalancer->{$getFunction}());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testArgumentsDataProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'steeringPolicy arguments valid' => [
|
||||||
|
'setSteeringPolicy', ['off', 'geo', 'random', 'dynamic_latency', ''], 'getSteeringPolicy', false
|
||||||
|
],
|
||||||
|
'sessionAffinity arguments valid' => [
|
||||||
|
'setSessionAffinity', ['none', 'cookie', 'ip_cookie', ''], 'getSessionAffinity', false
|
||||||
|
],
|
||||||
|
'sessionAffinityTtl arguments valid' => [
|
||||||
|
'setSessionAffinityTtl', [3600], 'getSessionAffinityTtl', false
|
||||||
|
],
|
||||||
|
'steeringPolicy arguments invalid' => [
|
||||||
|
'setSteeringPolicy', ['invalid'], 'getSteeringPolicy', true
|
||||||
|
],
|
||||||
|
'sessionAffinity arguments invalid' => [
|
||||||
|
'setSessionAffinity', ['invalid'], 'getSessionAffinity', true
|
||||||
|
],
|
||||||
|
'sessionAffinityTtl arguments invalid' => [
|
||||||
|
'setSessionAffinityTtl', [1337], 'getSessionAffinityTtl', true
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
53
tests/Configurations/PoolTest.php
Normal file
53
tests/Configurations/PoolTest.php
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Cloudflare\API\Configurations\ConfigurationsException;
|
||||||
|
use Cloudflare\API\Configurations\Pool;
|
||||||
|
|
||||||
|
class PoolTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider testArgumentsDataProvider
|
||||||
|
*/
|
||||||
|
public function testArguments($setFunction, $arguments, $getFunction, $invalid)
|
||||||
|
{
|
||||||
|
$pool = new Pool('bogus', []);
|
||||||
|
foreach ($arguments as $argument) {
|
||||||
|
if ($invalid) {
|
||||||
|
try {
|
||||||
|
$pool->{$setFunction}($argument);
|
||||||
|
} catch (ConfigurationsException $e) {
|
||||||
|
$this->assertNotEquals($argument, $pool->{$getFunction}());
|
||||||
|
}
|
||||||
|
} elseif ($invalid === false) {
|
||||||
|
$pool->{$setFunction}($argument);
|
||||||
|
$this->assertEquals($argument, $pool->{$getFunction}());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testArgumentsDataProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'origins arguments valid' => [
|
||||||
|
'setOrigins', [[['name' => 'test', 'address' => 'server1.example.com']]], 'getOrigins', false
|
||||||
|
],
|
||||||
|
'setNotificationEmail arguments valid' => [
|
||||||
|
'setNotificationEmail', ['user@example.com'], 'getNotificationEmail', false
|
||||||
|
],
|
||||||
|
'origins arguments invalid no address' => [
|
||||||
|
'setOrigins', [['name' => 'test']], 'getOrigins', true
|
||||||
|
],
|
||||||
|
'origins arguments invalid no name' => [
|
||||||
|
'setOrigins', [['address' => 'server1.example.com']], 'getOrigins', true
|
||||||
|
],
|
||||||
|
'setNotificationEmail arguments invalid' => [
|
||||||
|
'setNotificationEmail', ['userexample.com'], 'getNotificationEmail', true
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
37
tests/Endpoints/AccountsTest.php
Normal file
37
tests/Endpoints/AccountsTest.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* User: kanasite
|
||||||
|
* Date: 01/28/2019
|
||||||
|
* Time: 10:00
|
||||||
|
*/
|
||||||
|
class AccountsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testListZones()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listAccounts.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('accounts'),
|
||||||
|
$this->equalTo([
|
||||||
|
'page' => 1,
|
||||||
|
'per_page' => 20,
|
||||||
|
'direction' => 'desc',
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$accounts = new \Cloudflare\API\Endpoints\Accounts($mock);
|
||||||
|
$result = $accounts->listAccounts(1, 20, 'desc');
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute('result', $result);
|
||||||
|
$this->assertObjectHasAttribute('result_info', $result);
|
||||||
|
|
||||||
|
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->result[0]->id);
|
||||||
|
$this->assertEquals(1, $result->result_info->page);
|
||||||
|
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $accounts->getBody()->result[0]->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
120
tests/Endpoints/CertificatesTest.php
Normal file
120
tests/Endpoints/CertificatesTest.php
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Cloudflare\API\Endpoints\Certificates;
|
||||||
|
|
||||||
|
class CertificatesTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testListCertificates()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listCertificates.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('certificates'),
|
||||||
|
$this->equalTo(
|
||||||
|
[
|
||||||
|
'zone_id' => '023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$certEndpoint = new Certificates($mock);
|
||||||
|
$result = $certEndpoint->listCertificates('023e105f4ecef8ad9ca31a8372d0c353');
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute('result', $result);
|
||||||
|
|
||||||
|
$cert = $result->result[0];
|
||||||
|
$this->assertEquals('328578533902268680212849205732770752308931942346', $cert->id);
|
||||||
|
$this->assertEquals('origin-rsa', $cert->request_type);
|
||||||
|
$this->assertEquals(5475, $cert->requested_validity);
|
||||||
|
$this->assertEquals(['example.com', '*.example.com'], $cert->hostnames);
|
||||||
|
$this->assertEquals('some-cert-data', $cert->certificate);
|
||||||
|
$this->assertEquals('some-csr-data', $cert->csr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetCertificate()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getCertificate.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('certificates/6666699999996666699999999966666666'),
|
||||||
|
$this->equalTo(['zone_id' => '023e105f4ecef8ad9ca31a8372d0c353']),
|
||||||
|
$this->equalTo([])
|
||||||
|
);
|
||||||
|
|
||||||
|
$certEndpoint = new Certificates($mock);
|
||||||
|
$response = $certEndpoint->getCertificate(
|
||||||
|
'6666699999996666699999999966666666',
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353'
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute('result', $response);
|
||||||
|
$cert = $response->result;
|
||||||
|
$this->assertEquals('6666699999996666699999999966666666', $cert->id);
|
||||||
|
$this->assertEquals('origin-ecc', $cert->request_type);
|
||||||
|
$this->assertEquals(5475, $cert->requested_validity);
|
||||||
|
$this->assertEquals(['foo.example.com', 'bar.example.com'], $cert->hostnames);
|
||||||
|
$this->assertEquals('some-cert-data-foobar', $cert->certificate);
|
||||||
|
$this->assertEquals('some-csr-data-foobar', $cert->csr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRevokeCertificate()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getCertificate.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('delete')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('delete')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('certificates/11112222233333444455555'),
|
||||||
|
$this->equalTo(['zone_id' => '023e105f4ecef8ad9ca31a8372d0c353']),
|
||||||
|
$this->equalTo([])
|
||||||
|
);
|
||||||
|
|
||||||
|
$certEndpoint = new Certificates($mock);
|
||||||
|
$result = $certEndpoint->revokeCertificate(
|
||||||
|
'11112222233333444455555',
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353'
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreateCertificate()
|
||||||
|
{
|
||||||
|
$certificate = new \Cloudflare\API\Configurations\Certificate();
|
||||||
|
$certificate->setHostnames(['foo.example.com', 'bar.exapmle.com']);
|
||||||
|
$certificate->setRequestType(\Cloudflare\API\Configurations\Certificate::ORIGIN_ECC);
|
||||||
|
$certificate->setRequestedValidity(365);
|
||||||
|
$certificate->setCsr('some-csr-data-barbar');
|
||||||
|
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getCertificate.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('post')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('certificates'),
|
||||||
|
$this->equalTo($certificate->getArray()),
|
||||||
|
$this->equalTo([])
|
||||||
|
);
|
||||||
|
|
||||||
|
$certEndpoint = new Certificates($mock);
|
||||||
|
$result = $certEndpoint->createCertificate($certificate);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
82
tests/Endpoints/CryptoTest.php
Normal file
82
tests/Endpoints/CryptoTest.php
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class CryptoTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetOpportunisticEncryptionSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getOpportunisticEncryptionSetting.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/settings/opportunistic_encryption')
|
||||||
|
);
|
||||||
|
|
||||||
|
$cryptoMock = new \Cloudflare\API\Endpoints\Crypto($mock);
|
||||||
|
$result = $cryptoMock->getOpportunisticEncryptionSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('off', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetOnionRoutingSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getOnionRoutingSetting.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/settings/opportunistic_onion')
|
||||||
|
);
|
||||||
|
|
||||||
|
$cryptoMock = new \Cloudflare\API\Endpoints\Crypto($mock);
|
||||||
|
$result = $cryptoMock->getOnionRoutingSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('off', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateOpportunisticEncryptionSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateOpportunisticEncryptionSetting.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/opportunistic_encryption'),
|
||||||
|
$this->equalTo(['value' => 'off'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$cryptoMock = new \Cloudflare\API\Endpoints\Crypto($mock);
|
||||||
|
$result = $cryptoMock->updateOpportunisticEncryptionSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'off');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateOnionRoutingSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateOnionRoutingSetting.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/opportunistic_onion'),
|
||||||
|
$this->equalTo(['value' => 'off'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$cryptoMock = new \Cloudflare\API\Endpoints\Crypto($mock);
|
||||||
|
$result = $cryptoMock->updateOnionRoutingSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'off');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,6 +14,8 @@ class CustomHostnamesTest extends TestCase
|
|||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createCustomHostname.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createCustomHostname.json');
|
||||||
|
|
||||||
|
$customSsl = $this->getCustomSsl();
|
||||||
|
|
||||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
$mock->method('post')->willReturn($response);
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
@@ -23,15 +25,41 @@ class CustomHostnamesTest extends TestCase
|
|||||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames'),
|
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames'),
|
||||||
$this->equalTo([
|
$this->equalTo([
|
||||||
'hostname' => 'app.example.com',
|
'hostname' => 'app.example.com',
|
||||||
|
'custom_origin_server' => 'origin.example.com',
|
||||||
'ssl' => [
|
'ssl' => [
|
||||||
'method' => 'http',
|
'method' => 'http',
|
||||||
'type' => 'dv'
|
'type' => 'dv',
|
||||||
]
|
'settings' => [
|
||||||
|
'http2' => 'on',
|
||||||
|
'http3' => 'on',
|
||||||
|
'min_tls_version' => '1.2',
|
||||||
|
],
|
||||||
|
'bundle_method' => 'optimal',
|
||||||
|
'custom_key' => $customSsl['key'],
|
||||||
|
'custom_certificate' => $customSsl['certificate'],
|
||||||
|
'wildcard' => true,
|
||||||
|
],
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
$hostname = new CustomHostnames($mock);
|
$hostname = new CustomHostnames($mock);
|
||||||
$hostname->addHostname('023e105f4ecef8ad9ca31a8372d0c353', 'app.example.com', 'http', 'dv');
|
$sslSettings = [
|
||||||
|
'http2' => 'on',
|
||||||
|
'http3' => 'on',
|
||||||
|
'min_tls_version' => '1.2'
|
||||||
|
];
|
||||||
|
|
||||||
|
$hostname->addHostname(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
'app.example.com',
|
||||||
|
'http',
|
||||||
|
'dv',
|
||||||
|
$sslSettings,
|
||||||
|
'origin.example.com',
|
||||||
|
true,
|
||||||
|
'optimal',
|
||||||
|
$customSsl
|
||||||
|
);
|
||||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $hostname->getBody()->result->id);
|
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $hostname->getBody()->result->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +121,8 @@ class CustomHostnamesTest extends TestCase
|
|||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateHostname.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateHostname.json');
|
||||||
|
|
||||||
|
$customSsl = $this->getCustomSsl();
|
||||||
|
|
||||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
$mock->method('patch')->willReturn($response);
|
$mock->method('patch')->willReturn($response);
|
||||||
|
|
||||||
@@ -101,15 +131,45 @@ class CustomHostnamesTest extends TestCase
|
|||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9'),
|
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9'),
|
||||||
$this->equalTo([
|
$this->equalTo([
|
||||||
|
'custom_origin_server' => 'origin.example.com',
|
||||||
'ssl' => [
|
'ssl' => [
|
||||||
'method' => 'http',
|
'method' => 'http',
|
||||||
'type' => 'dv'
|
'type' => 'dv',
|
||||||
|
'settings' => [
|
||||||
|
'http2' => 'on',
|
||||||
|
'http3' => 'on',
|
||||||
|
'min_tls_version' => '1.2'
|
||||||
|
],
|
||||||
|
'bundle_method' => 'optimal',
|
||||||
|
'custom_key' => $customSsl['key'],
|
||||||
|
'custom_certificate' => $customSsl['certificate'],
|
||||||
|
'wildcard' => true,
|
||||||
|
|
||||||
]
|
]
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
||||||
$result = $zones->updateHostname('023e105f4ecef8ad9ca31a8372d0c353', '0d89c70d-ad9f-4843-b99f-6cc0252067e9', 'http', 'dv');
|
$sslSettings = [
|
||||||
|
'http2' => 'on',
|
||||||
|
'http3' => 'on',
|
||||||
|
'min_tls_version' => '1.2'
|
||||||
|
];
|
||||||
|
|
||||||
|
$result = $zones->updateHostname(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
'0d89c70d-ad9f-4843-b99f-6cc0252067e9',
|
||||||
|
'http',
|
||||||
|
'dv',
|
||||||
|
$sslSettings,
|
||||||
|
'origin.example.com',
|
||||||
|
true,
|
||||||
|
'optimal',
|
||||||
|
[
|
||||||
|
'key' => $customSsl['key'],
|
||||||
|
'certificate' => $customSsl['certificate'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
$this->assertObjectHasAttribute('id', $result);
|
$this->assertObjectHasAttribute('id', $result);
|
||||||
$this->assertObjectHasAttribute('hostname', $result);
|
$this->assertObjectHasAttribute('hostname', $result);
|
||||||
@@ -135,4 +195,88 @@ class CustomHostnamesTest extends TestCase
|
|||||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $result->id);
|
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $result->id);
|
||||||
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->id);
|
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetHostnameFallbackOrigin()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getCustomHostnameFallbackOrigin.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/fallback_origin')
|
||||||
|
);
|
||||||
|
|
||||||
|
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
|
||||||
|
$result = $zones->getFallbackOrigin('023e105f4ecef8ad9ca31a8372d0c353');
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute('origin', $result);
|
||||||
|
$this->assertObjectHasAttribute('status', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getCustomSsl(): array
|
||||||
|
{
|
||||||
|
$customKey = <<<KEY
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDZfoCUkzkZLCzo
|
||||||
|
OFTtlXU9OYqNFx06J/GOKCwDCyfkY5RY1x6BVrVpTqf/JaU42DZmCjIiEugBg4bu
|
||||||
|
eu9/w21prIWgRKEe8mjrw83+3QSIyQrs+78rqwDptUfL+IyhYln6SBjqPQ569Y0w
|
||||||
|
x6A896PDMYPHgnWtclGwsxDNKJ2eWsH+C4UkLUeVM4BILEJ00YUjayowL/0sflTJ
|
||||||
|
yY58c9fVV27aGBJ4znreYkBojPQ0fzVZ3HJfYD+DgYUUkuzN/WohOLTNTxvzt/i2
|
||||||
|
GNxP8tZzi0E/t4KtGTsIVmROKaCXnmozQyv0VES5TNZL1nxLvVuPca9DKXwVst2o
|
||||||
|
v5czEM8fAgMBAAECggEBANgG/aIVpWYqaaRyp3CgviWE7Oh9J+um1xgzMJwJTaNd
|
||||||
|
gXDIoyUmweQKW3Vjp/uRTl8GC4uqqcUvJivj8dU+gIOw970bzcmWT7616vsV/rX6
|
||||||
|
sp524wh1vt9jzx97DfwSW3rsd8rZwHNDSO1FqxRDiOaNXO4i183iud8/zRVqHTy1
|
||||||
|
5girngsGl7ebTt3LDHDQQ86kND2nVr8xZuFaqs8Td41AsF6DGbB709wMUqoM/obO
|
||||||
|
iUtXCZ5Rrm2a78OUi0cqWsuxdhJjtOW0PBvrPTlSq+1EuQWAWV8HN1JI58YnLcLy
|
||||||
|
SKZpsu5wxWdKMgX0NCkfLjDZCAPlBaZLPPp986GHavECgYEA8hM6tIfGBnXuxBvI
|
||||||
|
y2lJG3sHGs83pnCqYg9dDrr+m3JOPQu6l9MEPEtsrOiI0Ktu/L+kV5uyBDRvB6ff
|
||||||
|
BD6BJ2CiG86UvMpKojBeAlZBLXr1SnWzIPC+3fBzkVSo1MiRs3nTNRfeblkRxC3e
|
||||||
|
LWtl96obA1GOgpifrh6ZB2RfvrcCgYEA5gFL4+oDUDcRtc1Pw+AFwPTey+3rkVU+
|
||||||
|
FHvRGeU+m6dtxXF+BYFpDs/ONfmHzsdBSwkYxta/x8rKP5uyjl9p0QSdhysrJibO
|
||||||
|
sWsoux35QxEZiyplCV2+zMK/79EhS2CuiudAidF6NxK+/g9EwXRlGDDlnFDB2epe
|
||||||
|
kyL97K4zCtkCgYEA68Bgbsq/xzD5XFG2xqr9wN6a97gQ+W5F8QQHW74vEZJLsdYH
|
||||||
|
Xa7rNBE8gFRiUd5zU4EL+yotPz0VWH5bilWZEJFirvQMFKRp9PRnyZzZEwLpeh+Q
|
||||||
|
WSc8qwZudn3dgoTmqMSfNdjODed+jvEgrFkoz/8BGcVGpdcfw8IWxIUzXZcCgYAY
|
||||||
|
/OsRx8q0XEdASR3xWdVGMVRDM4X0NB6aexkshwtWPcpfOQVH89dGFK2Cj6mBfYRK
|
||||||
|
cqKOd6Y+Pnnajz/G1/bXDnlOxhHaAz1RaSLzsT3zW1g7FlADxHuGI2JW25GSbt6H
|
||||||
|
mLgaQPfWI+M8FsyRd+PDzQwk/2EQG7ZKpfKQVByXgQKBgQDkKciB6Wb2hLNTKzK8
|
||||||
|
Kr42U70H++QT8AqZX2F79PjgYcRFZqGXLuq/hEuiOhXfl8DFur3fC5JN8AeLC5/j
|
||||||
|
bsrBsljYfVvtLQzilugs1oEe94LTrYjR2oQt0W24bqpGQHuv1ILuUBuodERkxSFL
|
||||||
|
/cMkj3wSfC341hFaJEuG1+PcxA==
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
|
KEY;
|
||||||
|
|
||||||
|
$customCertificate = <<<CERTIFICATE
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDmTCCAoGgAwIBAgIULyaeNqp0tOut/wvuxNyKmUxOGYEwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwXDELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UE
|
||||||
|
CgwTRGVmYXVsdCBDb21wYW55IEx0ZDEYMBYGA1UEAwwPYXBwLmV4YW1wbGUuY29t
|
||||||
|
MB4XDTIxMDYxNDIzMzU0MVoXDTIyMDYxNDIzMzU0MVowXDELMAkGA1UEBhMCWFgx
|
||||||
|
FTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55
|
||||||
|
IEx0ZDEYMBYGA1UEAwwPYXBwLmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEF
|
||||||
|
AAOCAQ8AMIIBCgKCAQEA2X6AlJM5GSws6DhU7ZV1PTmKjRcdOifxjigsAwsn5GOU
|
||||||
|
WNcegVa1aU6n/yWlONg2ZgoyIhLoAYOG7nrvf8NtaayFoEShHvJo68PN/t0EiMkK
|
||||||
|
7Pu/K6sA6bVHy/iMoWJZ+kgY6j0OevWNMMegPPejwzGDx4J1rXJRsLMQzSidnlrB
|
||||||
|
/guFJC1HlTOASCxCdNGFI2sqMC/9LH5UycmOfHPX1Vdu2hgSeM563mJAaIz0NH81
|
||||||
|
WdxyX2A/g4GFFJLszf1qITi0zU8b87f4thjcT/LWc4tBP7eCrRk7CFZkTimgl55q
|
||||||
|
M0Mr9FREuUzWS9Z8S71bj3GvQyl8FbLdqL+XMxDPHwIDAQABo1MwUTAdBgNVHQ4E
|
||||||
|
FgQUbAfyBm0wpM7FqUb1yqeaF4voY/gwHwYDVR0jBBgwFoAUbAfyBm0wpM7FqUb1
|
||||||
|
yqeaF4voY/gwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAO2Dd
|
||||||
|
k/seFjp83caYE/NVdDy5B7l5JeVtruaUdlGbb0xtVhiIdoY43ukhHFw8zuWMW9RX
|
||||||
|
SUbrzwacfKLDBikcefk9go6cMimqYIRF8Hntph1gjjqB0papUm2WVYbsBRv2okys
|
||||||
|
ej0dGSeUEsWjKRTSMkJsbbiEv6oveeSki069zl+tln0UhbHedkIY3rJsFIyoddSu
|
||||||
|
g96r5HPHksnObm1JCym0xd09+msliDkBmq87mxok9m5aEqWX4XvdGfYERV/eD5vC
|
||||||
|
KcW4DoM1KZd8E6tlniglc1jC0pzKfho7Uoe6UtObgHZGNwRYwYy+BHvHYY46ctSI
|
||||||
|
NdZ7G/lUyrBFhsRrhw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
CERTIFICATE;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'key' => $customKey,
|
||||||
|
'certificate' => $customCertificate,
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
91
tests/Endpoints/DNSAnalyticsTest.php
Normal file
91
tests/Endpoints/DNSAnalyticsTest.php
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Visual Studio Code.
|
||||||
|
* User: elliot.alderson
|
||||||
|
* Date: 10/02/2020
|
||||||
|
* Time: 04:28 AM
|
||||||
|
*/
|
||||||
|
class DNSAnalyticsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetDNSAnalyticsReportTable()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture(
|
||||||
|
'Endpoints/getDNSAnalyticsReportTable.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/dns_analytics/report'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$analytics = new \Cloudflare\API\Endpoints\DNSAnalytics($mock);
|
||||||
|
$since = '2020-02-01T00:00:00Z';
|
||||||
|
$until = '2020-02-28T23:59:59Z';
|
||||||
|
$filters = 'responseCode==NOERROR AND queryType==A';
|
||||||
|
|
||||||
|
$result = $analytics->getReportTable(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
['queryName', 'queryType', 'responseCode'],
|
||||||
|
['queryCount'],
|
||||||
|
['-queryCount'],
|
||||||
|
$filters,
|
||||||
|
$since,
|
||||||
|
$until
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals(1, $result->rows);
|
||||||
|
$this->assertEquals($since, $result->query->since);
|
||||||
|
$this->assertEquals($until, $result->query->until);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetDNSAnalyticsReportByTime()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture(
|
||||||
|
'Endpoints/getDNSAnalyticsReportByTime.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/dns_analytics/report/bytime'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$analytics = new \Cloudflare\API\Endpoints\DNSAnalytics($mock);
|
||||||
|
$since = '2020-02-01T00:00:00Z';
|
||||||
|
$until = '2020-02-28T23:59:59Z';
|
||||||
|
$filters = 'responseCode==NOERROR AND queryType==A';
|
||||||
|
|
||||||
|
$result = $analytics->getReportByTime(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
['queryName', 'queryType', 'responseCode'],
|
||||||
|
['queryCount'],
|
||||||
|
['-queryCount'],
|
||||||
|
$filters,
|
||||||
|
$since,
|
||||||
|
$until,
|
||||||
|
2
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals(2, $result->rows);
|
||||||
|
$this->assertEquals($since, $result->query->since);
|
||||||
|
$this->assertEquals($until, $result->query->until);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,6 +32,57 @@ class DNSTest extends TestCase
|
|||||||
$dns->addRecord('023e105f4ecef8ad9ca31a8372d0c353', 'A', 'example.com', '127.0.0.1', '120', false);
|
$dns->addRecord('023e105f4ecef8ad9ca31a8372d0c353', 'A', 'example.com', '127.0.0.1', '120', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAddMXRecordPriority10()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/addRecord.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/dns_records'),
|
||||||
|
$this->equalTo([
|
||||||
|
'type' => 'MX',
|
||||||
|
'name' => 'example.com',
|
||||||
|
'content' => '127.0.0.1',
|
||||||
|
'ttl' => 120,
|
||||||
|
'proxied' => false,
|
||||||
|
'priority' => 10,
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
|
||||||
|
$dns->addRecord('023e105f4ecef8ad9ca31a8372d0c353', 'MX', 'example.com', '127.0.0.1', '120', false, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAddMXRecordPriority0()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/addRecord.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/dns_records'),
|
||||||
|
$this->equalTo([
|
||||||
|
'type' => 'MX',
|
||||||
|
'name' => 'example.com',
|
||||||
|
'content' => '127.0.0.1',
|
||||||
|
'ttl' => 120,
|
||||||
|
'proxied' => false,
|
||||||
|
'priority' => 0,
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
|
||||||
|
$dns->addRecord('023e105f4ecef8ad9ca31a8372d0c353', 'MX', 'example.com', '127.0.0.1', '120', false, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function testListRecords()
|
public function testListRecords()
|
||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRecords.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRecords.json');
|
||||||
@@ -86,6 +137,25 @@ class DNSTest extends TestCase
|
|||||||
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
|
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetRecordID()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getRecordId.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/dns_records')
|
||||||
|
);
|
||||||
|
|
||||||
|
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
|
||||||
|
$result = $dns->getRecordID('023e105f4ecef8ad9ca31a8372d0c353', 'A', 'example.com');
|
||||||
|
|
||||||
|
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result);
|
||||||
|
}
|
||||||
|
|
||||||
public function testUpdateDNSRecord()
|
public function testUpdateDNSRecord()
|
||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateDNSRecord.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateDNSRecord.json');
|
||||||
|
|||||||
121
tests/Endpoints/FirewallSettingsTest.php
Normal file
121
tests/Endpoints/FirewallSettingsTest.php
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class FirewallSettingsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetSecurityLevelSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getSecurityLevelSetting.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/settings/security_level')
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewallSettingsMock = new \Cloudflare\API\Endpoints\FirewallSettings($mock);
|
||||||
|
$result = $firewallSettingsMock->getSecurityLevelSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('medium', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetChallengeTTLSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getChallengeTTLSetting.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/settings/challenge_ttl')
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewallSettingsMock = new \Cloudflare\API\Endpoints\FirewallSettings($mock);
|
||||||
|
$result = $firewallSettingsMock->getChallengeTTLSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals(1800, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetBrowserIntegrityCheckSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getBrowserIntegrityCheckSetting.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/settings/browser_check')
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewallSettingsMock = new \Cloudflare\API\Endpoints\FirewallSettings($mock);
|
||||||
|
$result = $firewallSettingsMock->getBrowserIntegrityCheckSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('on', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateSecurityLevelSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateSecurityLevelSetting.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/security_level'),
|
||||||
|
$this->equalTo(['value' => 'medium'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewallSettingsMock = new \Cloudflare\API\Endpoints\FirewallSettings($mock);
|
||||||
|
$result = $firewallSettingsMock->updateSecurityLevelSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'medium');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateChallengeTTLSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateChallengeTTLSetting.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/challenge_ttl'),
|
||||||
|
$this->equalTo(['value' => 1800])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewallSettingsMock = new \Cloudflare\API\Endpoints\FirewallSettings($mock);
|
||||||
|
$result = $firewallSettingsMock->updateChallengeTTLSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 1800);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateBrowserIntegrityCheckSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateBrowserIntegrityCheckSetting.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/browser_check'),
|
||||||
|
$this->equalTo(['value' => 'on'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewallSettingsMock = new \Cloudflare\API\Endpoints\FirewallSettings($mock);
|
||||||
|
$result = $firewallSettingsMock->updateBrowserIntegrityCheckSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'on');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
177
tests/Endpoints/FirewallTest.php
Normal file
177
tests/Endpoints/FirewallTest.php
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class FirewallTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testCreatePageRules()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createFirewallRules.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/rules'),
|
||||||
|
$this->equalTo([
|
||||||
|
[
|
||||||
|
'action' => 'block',
|
||||||
|
'description' => 'Foo',
|
||||||
|
'filter' => [
|
||||||
|
'expression' => 'http.cookie eq "foo"',
|
||||||
|
'paused' => false
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'action' => 'block',
|
||||||
|
'description' => 'Bar',
|
||||||
|
'filter' => [
|
||||||
|
'expression' => 'http.cookie eq "bar"',
|
||||||
|
'paused' => false
|
||||||
|
],
|
||||||
|
]
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewall = new Cloudflare\API\Endpoints\Firewall($mock);
|
||||||
|
$result = $firewall->createFirewallRules(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'filter' => [
|
||||||
|
'expression' => 'http.cookie eq "foo"',
|
||||||
|
'paused' => false
|
||||||
|
],
|
||||||
|
'action' => 'block',
|
||||||
|
'description' => 'Foo'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'filter' => [
|
||||||
|
'expression' => 'http.cookie eq "bar"',
|
||||||
|
'paused' => false
|
||||||
|
],
|
||||||
|
'action' => 'block',
|
||||||
|
'description' => 'Bar'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreatePageRule()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createFirewallRule.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/rules'),
|
||||||
|
$this->equalTo([
|
||||||
|
[
|
||||||
|
'action' => 'block',
|
||||||
|
'description' => 'Foobar',
|
||||||
|
'filter' => [
|
||||||
|
'expression' => 'http.cookie eq "foobar"',
|
||||||
|
'paused' => false
|
||||||
|
],
|
||||||
|
'paused' => false
|
||||||
|
]
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewall = new Cloudflare\API\Endpoints\Firewall($mock);
|
||||||
|
$options = new \Cloudflare\API\Configurations\FirewallRuleOptions();
|
||||||
|
$options->setActionBlock();
|
||||||
|
$result = $firewall->createFirewallRule(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
'http.cookie eq "foobar"',
|
||||||
|
$options,
|
||||||
|
'Foobar'
|
||||||
|
);
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testListFirewallRules()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listFirewallRules.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/rules'),
|
||||||
|
$this->equalTo([
|
||||||
|
'page' => 1,
|
||||||
|
'per_page' => 50
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewall = new Cloudflare\API\Endpoints\Firewall($mock);
|
||||||
|
$result = $firewall->listFirewallRules('023e105f4ecef8ad9ca31a8372d0c353');
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute('result', $result);
|
||||||
|
$this->assertObjectHasAttribute('result_info', $result);
|
||||||
|
|
||||||
|
$this->assertEquals('970b10321e3f4adda674c912b5f76591', $result->result[0]->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDeleteFirewallRule()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteFirewallRule.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/rules/970b10321e3f4adda674c912b5f76591')
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewall = new Cloudflare\API\Endpoints\Firewall($mock);
|
||||||
|
$firewall->deleteFirewallRule('023e105f4ecef8ad9ca31a8372d0c353', '970b10321e3f4adda674c912b5f76591');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateFirewallRule()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateFirewallRule.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
|
$mock->method('put')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('put')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/rules/970b10321e3f4adda674c912b5f76591'),
|
||||||
|
$this->equalTo([
|
||||||
|
'id' => '970b10321e3f4adda674c912b5f76591',
|
||||||
|
'action' => 'block',
|
||||||
|
'description' => 'Foo',
|
||||||
|
'filter' => [
|
||||||
|
'id' => '5def9c4297e0466cb0736b838345d910',
|
||||||
|
'expression' => 'http.cookie eq "foo"',
|
||||||
|
'paused' => false
|
||||||
|
],
|
||||||
|
'paused' => false
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
$firewall = new Cloudflare\API\Endpoints\Firewall($mock);
|
||||||
|
$options = new \Cloudflare\API\Configurations\FirewallRuleOptions();
|
||||||
|
$options->setActionBlock();
|
||||||
|
$result = $firewall->updateFirewallRule(
|
||||||
|
'023e105f4ecef8ad9ca31a8372d0c353',
|
||||||
|
'970b10321e3f4adda674c912b5f76591',
|
||||||
|
'5def9c4297e0466cb0736b838345d910',
|
||||||
|
'http.cookie eq "foo"',
|
||||||
|
$options,
|
||||||
|
'Foo'
|
||||||
|
);
|
||||||
|
$this->assertEquals('970b10321e3f4adda674c912b5f76591', $result->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
128
tests/Endpoints/LoadBalancersTest.php
Normal file
128
tests/Endpoints/LoadBalancersTest.php
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Configurations\LoadBalancer;
|
||||||
|
use Cloudflare\API\Endpoints\LoadBalancers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
class LoadBalancersTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testCreateLoadBalancer()
|
||||||
|
{
|
||||||
|
$pools = [
|
||||||
|
'17b5962d775c646f3f9725cbc7a53df4',
|
||||||
|
'9290f38c5d07c2e2f4df57b1f61d4196',
|
||||||
|
'00920f38ce07c2e2f4df50b1f61d4194'
|
||||||
|
];
|
||||||
|
|
||||||
|
$lbConfiguration = new LoadBalancer('www.example.com', $pools, '17b5962d775c646f3f9725cbc7a53df4');
|
||||||
|
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createLoadBalancer.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('post')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/699d98642c564d2e855e9661899b7252/load_balancers'),
|
||||||
|
$lbConfiguration->getArray()
|
||||||
|
);
|
||||||
|
|
||||||
|
$loadBalancers = new LoadBalancers($mock);
|
||||||
|
$result = $loadBalancers->createLoadBalancer('699d98642c564d2e855e9661899b7252', $lbConfiguration);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('699d98642c564d2e855e9661899b7252', $loadBalancers->getBody()->result->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testListLoadBalancer()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listLoadBalancers.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/699d98642c564d2e855e9661899b7252/load_balancers')
|
||||||
|
);
|
||||||
|
|
||||||
|
$loadBalancers = new LoadBalancers($mock);
|
||||||
|
$loadBalancers->listLoadBalancers('699d98642c564d2e855e9661899b7252');
|
||||||
|
$this->assertEquals('699d98642c564d2e855e9661899b7252', $loadBalancers->getBody()->result[0]->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetLoadBalancerDetails()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getLoadBalancerDetails.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/699d98642c564d2e855e9661899b7252/load_balancers/699d98642c564d2e855e9661899b7252')
|
||||||
|
);
|
||||||
|
|
||||||
|
$loadBalancers = new LoadBalancers($mock);
|
||||||
|
$loadBalancers->getLoadBalancerDetails('699d98642c564d2e855e9661899b7252', '699d98642c564d2e855e9661899b7252');
|
||||||
|
$this->assertEquals('699d98642c564d2e855e9661899b7252', $loadBalancers->getBody()->result->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateLoadBalancer()
|
||||||
|
{
|
||||||
|
$pools = [
|
||||||
|
'17b5962d775c646f3f9725cbc7a53df4',
|
||||||
|
'9290f38c5d07c2e2f4df57b1f61d4196',
|
||||||
|
'00920f38ce07c2e2f4df50b1f61d4194'
|
||||||
|
];
|
||||||
|
|
||||||
|
$lbConfiguration = new LoadBalancer('www.example.com', $pools, '17b5962d775c646f3f9725cbc7a53df4');
|
||||||
|
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateLoadBalancer.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('put')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('put')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/699d98642c564d2e855e9661899b7252/load_balancers/699d98642c564d2e855e9661899b7252'),
|
||||||
|
$this->equalTo($lbConfiguration->getArray())
|
||||||
|
);
|
||||||
|
|
||||||
|
$loadBalancers = new LoadBalancers($mock);
|
||||||
|
$result = $loadBalancers->updateLoadBalancer('699d98642c564d2e855e9661899b7252', '699d98642c564d2e855e9661899b7252', $lbConfiguration);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('699d98642c564d2e855e9661899b7252', $loadBalancers->getBody()->result->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDeleteLoadBalancer()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteLoadBalancer.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('delete')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('delete')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('zones/699d98642c564d2e855e9661899b7252/load_balancers/699d98642c564d2e855e9661899b7252')
|
||||||
|
);
|
||||||
|
|
||||||
|
$loadBalancers = new LoadBalancers($mock);
|
||||||
|
$result = $loadBalancers->deleteLoadBalancer('699d98642c564d2e855e9661899b7252', '699d98642c564d2e855e9661899b7252');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('699d98642c564d2e855e9661899b7252', $loadBalancers->getBody()->result->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -49,7 +49,7 @@ class PageRulesTest extends TestCase
|
|||||||
->method('get')
|
->method('get')
|
||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
|
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
|
||||||
$this->equalTo([
|
$this->equalTo([
|
||||||
'status' => 'active',
|
'status' => 'active',
|
||||||
'order' => 'status',
|
'order' => 'status',
|
||||||
'direction' => 'desc',
|
'direction' => 'desc',
|
||||||
@@ -94,7 +94,7 @@ class PageRulesTest extends TestCase
|
|||||||
$mock->expects($this->once())
|
$mock->expects($this->once())
|
||||||
->method('patch')
|
->method('patch')
|
||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
|
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
|
||||||
$this->equalTo([
|
$this->equalTo([
|
||||||
'targets' => $target->getArray(),
|
'targets' => $target->getArray(),
|
||||||
'actions' => $action->getArray(),
|
'actions' => $action->getArray(),
|
||||||
@@ -104,7 +104,7 @@ class PageRulesTest extends TestCase
|
|||||||
);
|
);
|
||||||
|
|
||||||
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
|
||||||
$result = $pageRules->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
|
$result = $pageRules->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac', $target, $action, true, 1);
|
||||||
|
|
||||||
$this->assertTrue($result);
|
$this->assertTrue($result);
|
||||||
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
|
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
|
||||||
|
|||||||
133
tests/Endpoints/PoolsTest.php
Normal file
133
tests/Endpoints/PoolsTest.php
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Endpoints\Pools;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Martijn Smidt <martijn@squeezely.tech>
|
||||||
|
* User: HemeraOne
|
||||||
|
* Date: 13/05/2019
|
||||||
|
*/
|
||||||
|
|
||||||
|
class PoolsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testCreatePool()
|
||||||
|
{
|
||||||
|
$origins = [
|
||||||
|
[
|
||||||
|
'name' => 'app-server-1',
|
||||||
|
'address' => '0.0.0.0',
|
||||||
|
'enabled' => true,
|
||||||
|
'weight' => 0.56
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$poolConfiguration = new \Cloudflare\API\Configurations\Pool('primary-dc-1', $origins);
|
||||||
|
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createPool.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('post')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/load_balancers/pools'),
|
||||||
|
$poolConfiguration->getArray()
|
||||||
|
);
|
||||||
|
|
||||||
|
$pools = new Pools($mock);
|
||||||
|
$result = $pools->createPool('01a7362d577a6c3019a474fd6f485823', $poolConfiguration);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('17b5962d775c646f3f9725cbc7a53df4', $pools->getBody()->result->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testListPools()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPools.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/load_balancers/pools')
|
||||||
|
);
|
||||||
|
|
||||||
|
$pools = new Pools($mock);
|
||||||
|
$pools->listPools('01a7362d577a6c3019a474fd6f485823');
|
||||||
|
$this->assertEquals('17b5962d775c646f3f9725cbc7a53df4', $pools->getBody()->result[0]->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetPoolDetails()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPoolDetails.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('get')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/load_balancers/pools/17b5962d775c646f3f9725cbc7a53df4')
|
||||||
|
);
|
||||||
|
|
||||||
|
$pools = new Pools($mock);
|
||||||
|
$pools->getPoolDetails('01a7362d577a6c3019a474fd6f485823', '17b5962d775c646f3f9725cbc7a53df4');
|
||||||
|
$this->assertEquals('17b5962d775c646f3f9725cbc7a53df4', $pools->getBody()->result->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdatePool()
|
||||||
|
{
|
||||||
|
$origins = [
|
||||||
|
[
|
||||||
|
'name' => 'app-server-1',
|
||||||
|
'address' => '0.0.0.0',
|
||||||
|
'enabled' => true,
|
||||||
|
'weight' => 0.56
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$poolConfiguration = new \Cloudflare\API\Configurations\Pool('primary-dc-1', $origins);
|
||||||
|
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updatePool.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('put')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('put')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/load_balancers/pools/17b5962d775c646f3f9725cbc7a53df4'),
|
||||||
|
$this->equalTo($poolConfiguration->getArray())
|
||||||
|
);
|
||||||
|
|
||||||
|
$pools = new Pools($mock);
|
||||||
|
$result = $pools->updatePool('01a7362d577a6c3019a474fd6f485823', '17b5962d775c646f3f9725cbc7a53df4', $poolConfiguration);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('17b5962d775c646f3f9725cbc7a53df4', $pools->getBody()->result->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDeletePool()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deletePool.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('delete')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())
|
||||||
|
->method('delete')
|
||||||
|
->with(
|
||||||
|
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/load_balancers/pools/17b5962d775c646f3f9725cbc7a53df4')
|
||||||
|
);
|
||||||
|
|
||||||
|
$pools = new Pools($mock);
|
||||||
|
$result = $pools->deletePool('01a7362d577a6c3019a474fd6f485823', '17b5962d775c646f3f9725cbc7a53df4');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('17b5962d775c646f3f9725cbc7a53df4', $pools->getBody()->result->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
161
tests/Endpoints/SSLTest.php
Normal file
161
tests/Endpoints/SSLTest.php
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class SSLTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetSSLSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getSSLSetting.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/settings/ssl')
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->getSSLSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('off', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetSSLVerificationStatus()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getSSLVerificationStatus.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/ssl/verification')
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->getSSLVerificationStatus('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertObjectHasAttribute('result', $result);
|
||||||
|
$this->assertEquals('active', $result->result[0]->certificate_status);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetHTTPSRedirectSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getHTTPSRedirectSetting.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/settings/always_use_https')
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->getHTTPSRedirectSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('off', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetHTTPSRewritesSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getHTTPSRewritesSetting.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/settings/automatic_https_rewrites')
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->getHTTPSRewritesSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('off', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateSSLSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateSSLSetting.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/ssl'),
|
||||||
|
$this->equalTo(['value' => 'full'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->updateSSLSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'full');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateHTTPSRedirectSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateHTTPSRedirectSetting.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/always_use_https'),
|
||||||
|
$this->equalTo(['value' => 'off'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->updateHTTPSRedirectSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'off');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateHTTPSRewritesSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateHTTPSRewritesSetting.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/automatic_https_rewrites'),
|
||||||
|
$this->equalTo(['value' => 'off'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->updateHTTPSRewritesSetting('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'off');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateSSLCertificatePackValidationMethod()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateSSLCertificatePackValidationMethod.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/ssl/verification/a77f8bd7-3b47-46b4-a6f1-75cf98109948'),
|
||||||
|
$this->equalTo(['validation_method' => 'txt'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$sslMock = new \Cloudflare\API\Endpoints\SSL($mock);
|
||||||
|
$result = $sslMock->updateSSLCertificatePackValidationMethod('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'a77f8bd7-3b47-46b4-a6f1-75cf98109948', 'txt');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,25 @@
|
|||||||
|
|
||||||
class TLSTest extends TestCase
|
class TLSTest extends TestCase
|
||||||
{
|
{
|
||||||
|
public function testGetTLSClientAuth()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getTLSClientAuth.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/settings/tls_client_auth')
|
||||||
|
);
|
||||||
|
|
||||||
|
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||||
|
$result = $tlsMock->getTLSClientAuth('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
|
||||||
|
|
||||||
|
$this->assertEquals('off', $result);
|
||||||
|
}
|
||||||
|
|
||||||
public function testEnableTLS13()
|
public function testEnableTLS13()
|
||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/enableTLS13.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/enableTLS13.json');
|
||||||
@@ -23,8 +42,8 @@ class TLSTest extends TestCase
|
|||||||
$this->equalTo(['value' => 'on'])
|
$this->equalTo(['value' => 'on'])
|
||||||
);
|
);
|
||||||
|
|
||||||
$zoneTLSSettings = new \Cloudflare\API\Endpoints\TLS($mock);
|
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||||
$result = $zoneTLSSettings->enableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
$result = $tlsMock->enableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
||||||
|
|
||||||
$this->assertTrue($result);
|
$this->assertTrue($result);
|
||||||
}
|
}
|
||||||
@@ -43,8 +62,8 @@ class TLSTest extends TestCase
|
|||||||
$this->equalTo(['value' => 'off'])
|
$this->equalTo(['value' => 'off'])
|
||||||
);
|
);
|
||||||
|
|
||||||
$zoneTLSSettings = new \Cloudflare\API\Endpoints\TLS($mock);
|
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||||
$result = $zoneTLSSettings->disableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
$result = $tlsMock->disableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
|
||||||
|
|
||||||
$this->assertTrue($result);
|
$this->assertTrue($result);
|
||||||
}
|
}
|
||||||
@@ -63,8 +82,28 @@ class TLSTest extends TestCase
|
|||||||
$this->equalTo(['value' => '1.1'])
|
$this->equalTo(['value' => '1.1'])
|
||||||
);
|
);
|
||||||
|
|
||||||
$zoneTLSSettings = new \Cloudflare\API\Endpoints\TLS($mock);
|
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||||
$result = $zoneTLSSettings->changeMinimumTLSVersion('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', '1.1');
|
$result = $tlsMock->changeMinimumTLSVersion('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', '1.1');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateTLSClientAuth()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateTLSClientAuth.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_client_auth'),
|
||||||
|
$this->equalTo(['value' => 'off'])
|
||||||
|
);
|
||||||
|
|
||||||
|
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
|
||||||
|
$result = $tlsMock->updateTLSClientAuth('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', 'off');
|
||||||
|
|
||||||
$this->assertTrue($result);
|
$this->assertTrue($result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ class UARulesTest extends TestCase
|
|||||||
->method('get')
|
->method('get')
|
||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
|
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
|
||||||
$this->equalTo([
|
$this->equalTo([
|
||||||
'page' => 1,
|
'page' => 1,
|
||||||
'per_page' => 20
|
'per_page' => 20
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
$zones = new \Cloudflare\API\Endpoints\UARules($mock);
|
$zones = new \Cloudflare\API\Endpoints\UARules($mock);
|
||||||
|
|||||||
19
tests/Endpoints/ZoneDeleteTest.php
Normal file
19
tests/Endpoints/ZoneDeleteTest.php
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
class ZoneDeleteTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testDeleteTest()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteZoneTest.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')
|
||||||
|
);
|
||||||
|
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
|
||||||
|
$result = $zones->deleteZone('023e105f4ecef8ad9ca31a8372d0c353');
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $zones->getBody()->result->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
69
tests/Endpoints/ZoneSettingsTest.php
Normal file
69
tests/Endpoints/ZoneSettingsTest.php
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use Cloudflare\API\Adapter\Adapter;
|
||||||
|
use Cloudflare\API\Endpoints\ZoneSettings;
|
||||||
|
|
||||||
|
class ZoneSettingsTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetServerSideExcludeSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getServerSideExclude.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())->method('get');
|
||||||
|
|
||||||
|
$zones = new ZoneSettings($mock);
|
||||||
|
$result = $zones->getServerSideExcludeSetting('023e105f4ecef8ad9ca31a8372d0c353');
|
||||||
|
|
||||||
|
$this->assertSame('on', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateServerSideExcludeSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateServerSideExclude.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('patch')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())->method('patch');
|
||||||
|
|
||||||
|
$zones = new ZoneSettings($mock);
|
||||||
|
$result = $zones->updateServerSideExcludeSetting('023e105f4ecef8ad9ca31a8372d0c353', 'on');
|
||||||
|
|
||||||
|
$this->assertSame('on', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetBrowserCacheTtlSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getBrowserCacheTtlSetting.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('get')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())->method('get');
|
||||||
|
|
||||||
|
$zones = new ZoneSettings($mock);
|
||||||
|
$result = $zones->getBrowserCacheTtlSetting('023e105f4ecef8ad9ca31a8372d0c353');
|
||||||
|
|
||||||
|
$this->assertSame(14400, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateBrowserCacheTtlSetting()
|
||||||
|
{
|
||||||
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateBrowserCacheTtlSetting.json');
|
||||||
|
|
||||||
|
$mock = $this->getMockBuilder(Adapter::class)->getMock();
|
||||||
|
$mock->method('patch')->willReturn($response);
|
||||||
|
|
||||||
|
$mock->expects($this->once())->method('patch');
|
||||||
|
|
||||||
|
$zones = new ZoneSettings($mock);
|
||||||
|
$result = $zones->updateBrowserCacheTtlSetting('023e105f4ecef8ad9ca31a8372d0c353', 16070400);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -102,6 +102,25 @@ class ZonesTest extends TestCase
|
|||||||
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
|
$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()
|
public function testGetZoneID()
|
||||||
{
|
{
|
||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getZoneId.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getZoneId.json');
|
||||||
@@ -175,10 +194,10 @@ class ZonesTest extends TestCase
|
|||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.json');
|
||||||
|
|
||||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
$mock->method('delete')->willReturn($response);
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
$mock->expects($this->once())
|
$mock->expects($this->once())
|
||||||
->method('delete')
|
->method('post')
|
||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
||||||
$this->equalTo(['purge_everything' => true])
|
$this->equalTo(['purge_everything' => true])
|
||||||
@@ -196,10 +215,10 @@ class ZonesTest extends TestCase
|
|||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeHost.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeHost.json');
|
||||||
|
|
||||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
$mock->method('delete')->willReturn($response);
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
$mock->expects($this->once())
|
$mock->expects($this->once())
|
||||||
->method('delete')
|
->method('post')
|
||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
||||||
$this->equalTo(
|
$this->equalTo(
|
||||||
@@ -223,10 +242,10 @@ class ZonesTest extends TestCase
|
|||||||
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurge.json');
|
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurge.json');
|
||||||
|
|
||||||
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
|
||||||
$mock->method('delete')->willReturn($response);
|
$mock->method('post')->willReturn($response);
|
||||||
|
|
||||||
$mock->expects($this->once())
|
$mock->expects($this->once())
|
||||||
->method('delete')
|
->method('post')
|
||||||
->with(
|
->with(
|
||||||
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
|
||||||
$this->equalTo(['files' => [
|
$this->equalTo(['files' => [
|
||||||
|
|||||||
17
tests/Fixtures/Endpoints/createCertificate.json
Normal file
17
tests/Fixtures/Endpoints/createCertificate.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "12341234123412341234",
|
||||||
|
"certificate": "some-cert-data-foofoo",
|
||||||
|
"hostnames": [
|
||||||
|
"foo.example.com",
|
||||||
|
"bar.example.com"
|
||||||
|
],
|
||||||
|
"expires_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"request_type": "origin-ecc",
|
||||||
|
"requested_validity": 365,
|
||||||
|
"csr": "some-csr-data-barbar"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
tests/Fixtures/Endpoints/createFirewallRule.json
Normal file
20
tests/Fixtures/Endpoints/createFirewallRule.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "970b10321e3f4adda674c912b5f76591",
|
||||||
|
"paused": false,
|
||||||
|
"description": "Foobar",
|
||||||
|
"action": "block",
|
||||||
|
"filter": {
|
||||||
|
"id": "70f39827184d487e97cc286b960f4cc3",
|
||||||
|
"expression": "http.cookie eq \"foobar\"",
|
||||||
|
"paused": false
|
||||||
|
},
|
||||||
|
"created_on": "2019-07-05T15:53:15Z",
|
||||||
|
"modified_on": "2019-07-05T15:53:15Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
33
tests/Fixtures/Endpoints/createFirewallRules.json
Normal file
33
tests/Fixtures/Endpoints/createFirewallRules.json
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "970b10321e3f4adda674c912b5f76591",
|
||||||
|
"paused": false,
|
||||||
|
"description": "Foo",
|
||||||
|
"action": "block",
|
||||||
|
"filter": {
|
||||||
|
"id": "70f39827184d487e97cc286b960f4cc3",
|
||||||
|
"expression": "http.cookie eq \"foo\"",
|
||||||
|
"paused": false
|
||||||
|
},
|
||||||
|
"created_on": "2019-07-05T15:53:15Z",
|
||||||
|
"modified_on": "2019-07-05T15:53:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "42c05fd0e0af4d17a361d2d1423476bc",
|
||||||
|
"paused": false,
|
||||||
|
"description": "Bar",
|
||||||
|
"action": "block",
|
||||||
|
"filter": {
|
||||||
|
"id": "246b4d9f5f51471485bdc95e1c6b53a7",
|
||||||
|
"expression": "http.cookie eq \"bar\"",
|
||||||
|
"paused": false
|
||||||
|
},
|
||||||
|
"created_on": "2019-07-05T15:53:15Z",
|
||||||
|
"modified_on": "2019-07-05T15:53:15Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
46
tests/Fixtures/Endpoints/createLoadBalancer.json
Normal file
46
tests/Fixtures/Endpoints/createLoadBalancer.json
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "699d98642c564d2e855e9661899b7252",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"description": "Load Balancer for www.example.com",
|
||||||
|
"name": "www.example.com",
|
||||||
|
"enabled": true,
|
||||||
|
"ttl": 30,
|
||||||
|
"fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"default_pools": [
|
||||||
|
"17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196",
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
],
|
||||||
|
"region_pools": {
|
||||||
|
"WNAM": [
|
||||||
|
"de90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"ENAM": [
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pop_pools": {
|
||||||
|
"LAX": [
|
||||||
|
"de90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"LHR": [
|
||||||
|
"abd90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"f9138c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"SJC": [
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"proxied": true,
|
||||||
|
"steering_policy": "dynamic_latency",
|
||||||
|
"session_affinity": "cookie",
|
||||||
|
"session_affinity_ttl": 5000
|
||||||
|
}
|
||||||
|
}
|
||||||
28
tests/Fixtures/Endpoints/createPool.json
Normal file
28
tests/Fixtures/Endpoints/createPool.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"description": "Primary data center - Provider XYZ",
|
||||||
|
"name": "primary-dc-1",
|
||||||
|
"enabled": true,
|
||||||
|
"minimum_origins": 2,
|
||||||
|
"monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
|
||||||
|
"check_regions": [
|
||||||
|
"WEU",
|
||||||
|
"ENAM"
|
||||||
|
],
|
||||||
|
"origins": [
|
||||||
|
{
|
||||||
|
"name": "app-server-1",
|
||||||
|
"address": "0.0.0.0",
|
||||||
|
"enabled": true,
|
||||||
|
"weight": 0.56
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"notification_email": "someone@example.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
tests/Fixtures/Endpoints/deleteFirewallRule.json
Normal file
8
tests/Fixtures/Endpoints/deleteFirewallRule.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"id": "970b10321e3f4adda674c912b5f76591"
|
||||||
|
},
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
8
tests/Fixtures/Endpoints/deleteLoadBalancer.json
Normal file
8
tests/Fixtures/Endpoints/deleteLoadBalancer.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "699d98642c564d2e855e9661899b7252"
|
||||||
|
}
|
||||||
|
}
|
||||||
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"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
tests/Fixtures/Endpoints/deletePool.json
Normal file
8
tests/Fixtures/Endpoints/deletePool.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "17b5962d775c646f3f9725cbc7a53df4"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
tests/Fixtures/Endpoints/deleteZoneTest.json
Normal file
8
tests/Fixtures/Endpoints/deleteZoneTest.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "9a7806061c88ada191ed06f989cc3dac"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/getBrowserCacheTtlSetting.json
Normal file
11
tests/Fixtures/Endpoints/getBrowserCacheTtlSetting.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "browser_cache_ttl",
|
||||||
|
"value": 14400,
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "browser_check",
|
||||||
|
"value": "on",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
tests/Fixtures/Endpoints/getCertificate.json
Normal file
17
tests/Fixtures/Endpoints/getCertificate.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "6666699999996666699999999966666666",
|
||||||
|
"certificate": "some-cert-data-foobar",
|
||||||
|
"hostnames": [
|
||||||
|
"foo.example.com",
|
||||||
|
"bar.example.com"
|
||||||
|
],
|
||||||
|
"expires_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"request_type": "origin-ecc",
|
||||||
|
"requested_validity": 5475,
|
||||||
|
"csr": "some-csr-data-foobar"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/getChallengeTTLSetting.json
Normal file
11
tests/Fixtures/Endpoints/getChallengeTTLSetting.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "challenge_ttl",
|
||||||
|
"value": 1800,
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"messages": [
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"origin": "fallback.example.com",
|
||||||
|
"status": "pending_deployment",
|
||||||
|
"errors": [
|
||||||
|
"DNS records are not setup correctly. Origin should be a proxied A/AAAA/CNAME dns record"
|
||||||
|
],
|
||||||
|
"created_at": "2019-10-28T18:11:23.37411Z",
|
||||||
|
"updated_at": "2020-03-16T18:11:23.531995Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
31
tests/Fixtures/Endpoints/getDNSAnalyticsReportByTime.json
Normal file
31
tests/Fixtures/Endpoints/getDNSAnalyticsReportByTime.json
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"rows": 2,
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"metrics": [[911, 993]]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"data_lag": 0,
|
||||||
|
"min": {},
|
||||||
|
"max": {},
|
||||||
|
"totals": {
|
||||||
|
"queryCount": 455312
|
||||||
|
},
|
||||||
|
"time_intervals": [
|
||||||
|
["2020-02-10T11:19:00Z", "2020-02-10T11:19:59Z"],
|
||||||
|
["2020-02-10T11:20:00Z", "2020-02-10T11:20:59Z"]
|
||||||
|
],
|
||||||
|
"query": {
|
||||||
|
"dimensions": [],
|
||||||
|
"metrics": ["queryCount"],
|
||||||
|
"since": "2020-02-01T00:00:00Z",
|
||||||
|
"until": "2020-02-28T23:59:59Z",
|
||||||
|
"time_delta": "minute",
|
||||||
|
"limit": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
34
tests/Fixtures/Endpoints/getDNSAnalyticsReportTable.json
Normal file
34
tests/Fixtures/Endpoints/getDNSAnalyticsReportTable.json
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"rows": 1,
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"dimensions": ["thrdld.sld.tld", "TXT", "NOERROR"],
|
||||||
|
"metrics": [2]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"data_lag": 0,
|
||||||
|
"min": {},
|
||||||
|
"max": {},
|
||||||
|
"totals": {
|
||||||
|
"queryCount": 2
|
||||||
|
},
|
||||||
|
"query": {
|
||||||
|
"dimensions": ["queryName", "queryType", "responseCode"],
|
||||||
|
"metrics": ["queryCount"],
|
||||||
|
"filters": "responseCode==NOERROR AND queryType==TXT",
|
||||||
|
"sort": [
|
||||||
|
{
|
||||||
|
"Id": "queryCount",
|
||||||
|
"Desc": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"since": "2020-02-01T00:00:00Z",
|
||||||
|
"until": "2020-02-28T23:59:59Z",
|
||||||
|
"limit": 10000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
6
tests/Fixtures/Endpoints/getHTTPSRedirectSetting.json
Normal file
6
tests/Fixtures/Endpoints/getHTTPSRedirectSetting.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": "off"
|
||||||
|
}
|
||||||
6
tests/Fixtures/Endpoints/getHTTPSRewritesSetting.json
Normal file
6
tests/Fixtures/Endpoints/getHTTPSRewritesSetting.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": "off"
|
||||||
|
}
|
||||||
46
tests/Fixtures/Endpoints/getLoadBalancerDetails.json
Normal file
46
tests/Fixtures/Endpoints/getLoadBalancerDetails.json
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "699d98642c564d2e855e9661899b7252",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"description": "Load Balancer for www.example.com",
|
||||||
|
"name": "www.example.com",
|
||||||
|
"enabled": true,
|
||||||
|
"ttl": 30,
|
||||||
|
"fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"default_pools": [
|
||||||
|
"17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196",
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
],
|
||||||
|
"region_pools": {
|
||||||
|
"WNAM": [
|
||||||
|
"de90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"ENAM": [
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pop_pools": {
|
||||||
|
"LAX": [
|
||||||
|
"de90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"LHR": [
|
||||||
|
"abd90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"f9138c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"SJC": [
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"proxied": true,
|
||||||
|
"steering_policy": "dynamic_latency",
|
||||||
|
"session_affinity": "cookie",
|
||||||
|
"session_affinity_ttl": 5000
|
||||||
|
}
|
||||||
|
}
|
||||||
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
tests/Fixtures/Endpoints/getOnionRoutingSetting.json
Normal file
6
tests/Fixtures/Endpoints/getOnionRoutingSetting.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": "off"
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "opportunistic_encryption",
|
||||||
|
"value": "off",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
28
tests/Fixtures/Endpoints/getPoolDetails.json
Normal file
28
tests/Fixtures/Endpoints/getPoolDetails.json
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"description": "Primary data center - Provider XYZ",
|
||||||
|
"name": "primary-dc-1",
|
||||||
|
"enabled": true,
|
||||||
|
"minimum_origins": 2,
|
||||||
|
"monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
|
||||||
|
"check_regions": [
|
||||||
|
"WEU",
|
||||||
|
"ENAM"
|
||||||
|
],
|
||||||
|
"origins": [
|
||||||
|
{
|
||||||
|
"name": "app-server-1",
|
||||||
|
"address": "0.0.0.0",
|
||||||
|
"enabled": true,
|
||||||
|
"weight": 0.56
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"notification_email": "someone@example.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
29
tests/Fixtures/Endpoints/getRecordId.json
Normal file
29
tests/Fixtures/Endpoints/getRecordId.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "372e67954025e0ba6aaa6d586b9e0b59",
|
||||||
|
"type": "A",
|
||||||
|
"name": "example.com",
|
||||||
|
"content": "198.51.100.4",
|
||||||
|
"proxiable": true,
|
||||||
|
"proxied": false,
|
||||||
|
"ttl": {},
|
||||||
|
"locked": false,
|
||||||
|
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
|
||||||
|
"zone_name": "example.com",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"data": {}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result_info": {
|
||||||
|
"page": 1,
|
||||||
|
"per_page": 20,
|
||||||
|
"total_pages": 1,
|
||||||
|
"count": 1,
|
||||||
|
"total_count": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/getSSLSetting.json
Normal file
11
tests/Fixtures/Endpoints/getSSLSetting.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "ssl",
|
||||||
|
"value": "off",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
16
tests/Fixtures/Endpoints/getSSLVerificationStatus.json
Normal file
16
tests/Fixtures/Endpoints/getSSLVerificationStatus.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"certificate_status": "active",
|
||||||
|
"verification_type": "cname",
|
||||||
|
"verification_status": true,
|
||||||
|
"verification_info": {
|
||||||
|
"record_name": "b3b90cfedd89a3e487d3e383c56c4267.example.com",
|
||||||
|
"record_target": "6979be7e4cfc9e5c603e31df7efac9cc60fee82d.comodoca.com"
|
||||||
|
},
|
||||||
|
"brand_check": false,
|
||||||
|
"validation_method": "txt",
|
||||||
|
"cert_pack_uuid": "a77f8bd7-3b47-46b4-a6f1-75cf98109948"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/getSecurityLevelSetting.json
Normal file
11
tests/Fixtures/Endpoints/getSecurityLevelSetting.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "security_level",
|
||||||
|
"value": "medium",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/getServerSideExclude.json
Normal file
11
tests/Fixtures/Endpoints/getServerSideExclude.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "server_side_exclude",
|
||||||
|
"value": "on",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/getTLSClientAuth.json
Normal file
11
tests/Fixtures/Endpoints/getTLSClientAuth.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "tls_client_auth",
|
||||||
|
"value": "off",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
20
tests/Fixtures/Endpoints/listAccounts.json
Normal file
20
tests/Fixtures/Endpoints/listAccounts.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "023e105f4ecef8ad9ca31a8372d0c353",
|
||||||
|
"name": "Example Account",
|
||||||
|
"settings": {
|
||||||
|
"enforce_twofactor": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result_info": {
|
||||||
|
"page": 1,
|
||||||
|
"per_page": 20,
|
||||||
|
"count": 1,
|
||||||
|
"total_count": 2000
|
||||||
|
}
|
||||||
|
}
|
||||||
19
tests/Fixtures/Endpoints/listCertificates.json
Normal file
19
tests/Fixtures/Endpoints/listCertificates.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "328578533902268680212849205732770752308931942346",
|
||||||
|
"certificate": "some-cert-data",
|
||||||
|
"hostnames": [
|
||||||
|
"example.com",
|
||||||
|
"*.example.com"
|
||||||
|
],
|
||||||
|
"expires_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"request_type": "origin-rsa",
|
||||||
|
"requested_validity": 5475,
|
||||||
|
"csr": "some-csr-data"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
27
tests/Fixtures/Endpoints/listFirewallRules.json
Normal file
27
tests/Fixtures/Endpoints/listFirewallRules.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "970b10321e3f4adda674c912b5f76591",
|
||||||
|
"paused": false,
|
||||||
|
"description": "Foobar",
|
||||||
|
"action": "block",
|
||||||
|
"filter": {
|
||||||
|
"id": "70f39827184d487e97cc286b960f4cc3",
|
||||||
|
"expression": "http.cookie eq \"foobar\"",
|
||||||
|
"paused": false
|
||||||
|
},
|
||||||
|
"created_on": "2019-07-05T15:53:15Z",
|
||||||
|
"modified_on": "2019-07-05T15:53:15Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result_info": {
|
||||||
|
"page": 1,
|
||||||
|
"per_page": 50,
|
||||||
|
"count": 1,
|
||||||
|
"total_count": 1,
|
||||||
|
"total_pages": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
54
tests/Fixtures/Endpoints/listLoadBalancers.json
Normal file
54
tests/Fixtures/Endpoints/listLoadBalancers.json
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "699d98642c564d2e855e9661899b7252",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"description": "Load Balancer for www.example.com",
|
||||||
|
"name": "www.example.com",
|
||||||
|
"enabled": true,
|
||||||
|
"ttl": 30,
|
||||||
|
"fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"default_pools": [
|
||||||
|
"17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196",
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
],
|
||||||
|
"region_pools": {
|
||||||
|
"WNAM": [
|
||||||
|
"de90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"ENAM": [
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pop_pools": {
|
||||||
|
"LAX": [
|
||||||
|
"de90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"9290f38c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"LHR": [
|
||||||
|
"abd90f38ced07c2e2f4df50b1f61d4194",
|
||||||
|
"f9138c5d07c2e2f4df57b1f61d4196"
|
||||||
|
],
|
||||||
|
"SJC": [
|
||||||
|
"00920f38ce07c2e2f4df50b1f61d4194"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"proxied": true,
|
||||||
|
"steering_policy": "dynamic_latency",
|
||||||
|
"session_affinity": "cookie",
|
||||||
|
"session_affinity_ttl": 5000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
36
tests/Fixtures/Endpoints/listPools.json
Normal file
36
tests/Fixtures/Endpoints/listPools.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": [
|
||||||
|
{
|
||||||
|
"id": "17b5962d775c646f3f9725cbc7a53df4",
|
||||||
|
"created_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z",
|
||||||
|
"description": "Primary data center - Provider XYZ",
|
||||||
|
"name": "primary-dc-1",
|
||||||
|
"enabled": true,
|
||||||
|
"minimum_origins": 2,
|
||||||
|
"monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
|
||||||
|
"check_regions": [
|
||||||
|
"WEU",
|
||||||
|
"ENAM"
|
||||||
|
],
|
||||||
|
"origins": [
|
||||||
|
{
|
||||||
|
"name": "app-server-1",
|
||||||
|
"address": "0.0.0.0",
|
||||||
|
"enabled": true,
|
||||||
|
"weight": 0.56
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"notification_email": "someone@example.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result_info": {
|
||||||
|
"page": 1,
|
||||||
|
"per_page": 20,
|
||||||
|
"count": 1,
|
||||||
|
"total_count": 2000
|
||||||
|
}
|
||||||
|
}
|
||||||
8
tests/Fixtures/Endpoints/revokeCertificate.json
Normal file
8
tests/Fixtures/Endpoints/revokeCertificate.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "11112222233333444455555"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/updateBrowserCacheTtlSetting.json
Normal file
11
tests/Fixtures/Endpoints/updateBrowserCacheTtlSetting.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "browser_cache_ttl",
|
||||||
|
"value": 14400,
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "browser_check",
|
||||||
|
"value": "on",
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
tests/Fixtures/Endpoints/updateChallengeTTLSetting.json
Normal file
11
tests/Fixtures/Endpoints/updateChallengeTTLSetting.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"id": "challenge_ttl",
|
||||||
|
"value": 1800,
|
||||||
|
"editable": true,
|
||||||
|
"modified_on": "2014-01-01T05:20:00.12345Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
tests/Fixtures/Endpoints/updateFirewallRule.json
Normal file
19
tests/Fixtures/Endpoints/updateFirewallRule.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"result": {
|
||||||
|
"id": "970b10321e3f4adda674c912b5f76591",
|
||||||
|
"paused": false,
|
||||||
|
"description": "Foo",
|
||||||
|
"action": "block",
|
||||||
|
"filter": {
|
||||||
|
"id": "5def9c4297e0466cb0736b838345d910",
|
||||||
|
"expression": "http.cookie eq \"foo\"",
|
||||||
|
"paused": false
|
||||||
|
},
|
||||||
|
"created_on": "2019-07-05T15:53:15Z",
|
||||||
|
"modified_on": "2019-07-05T18:07:46Z",
|
||||||
|
"index": 1
|
||||||
|
},
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": []
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user