1 Commits

Author SHA1 Message Date
Junade
67c34b789e Revert "MX records need ability to set priority" 2018-03-05 14:21:06 -06:00
171 changed files with 552 additions and 10731 deletions

View File

@@ -1,40 +0,0 @@
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

View File

@@ -1,40 +0,0 @@
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 Executable file → Normal file
View File

@@ -1,3 +1 @@
/.idea /vendor/
/vendor/
/nbproject/

15
.travis.yml Normal file
View File

@@ -0,0 +1,15 @@
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

View File

@@ -1,14 +1,17 @@
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 vendor/bin/php-cs-fixer fix --config=.php_cs php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs
lint: lint:
php vendor/bin/php-cs-fixer fix --config=.php_cs --dry-run php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs --dry-run
php vendor/bin/phpmd src/ text cleancode,codesize,controversial,design,naming,unusedcode php $(HERE)/vendor/bin/phpmd src/ text cleancode,codesize,controversial,design,naming,unusedcode
php vendor/bin/phpmd tests/ text cleancode,codesize,controversial,design,naming,unusedcode php $(HERE)/vendor/bin/phpmd tests/ text cleancode,codesize,controversial,design,naming,unusedcode
test: test:
php vendor/bin/phpunit --configuration phpunit.xml php $(HERE)/vendor/bin/phpunit --configuration $(HERE)/phpunit.xml

75
README.md Executable file → Normal file
View File

@@ -2,48 +2,45 @@
[![Build Status](https://travis-ci.org/cloudflare/cloudflare-php.svg?branch=master)](https://travis-ci.org/cloudflare/cloudflare-php) [![Build Status](https://travis-ci.org/cloudflare/cloudflare-php.svg?branch=master)](https://travis-ci.org/cloudflare/cloudflare-php)
See: [cloudflare/cloudflare-php](https://github.com/cloudflare/cloudflare-php) ## Installation
# Cloudflare SDK: added by Shellrent The recommended way to install this package is via the Packagist Dependency Manager ([cloudflare/sdk](https://packagist.org/packages/cloudflare/sdk)). You can specific usage examples on the Cloudflare Knowledge Base under: [Cloudflare PHP API Binding](https://support.cloudflare.com/hc/en-us/articles/115001661191)
- DNS Record is returned on creation: ## Cloudflare API version 4
`Class: Cloudflare\API\Endpoints\DNS` The Cloudflare API can be found [here](https://api.cloudflare.com/).
Each API call is provided via a similarly named function within various classes in the **Cloudflare\API\Endpoints** namespace:
- [x] [DNS Records](https://www.cloudflare.com/dns/)
- [x] Zones
- [x] User Administration (partial)
- [x] [Cloudflare IPs](https://www.cloudflare.com/ips/)
- [x] [Page Rules](https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-)
- [x] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/)
- [ ] Virtual DNS Management
- [ ] Custom hostnames
- [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
public function addRecord( $key = new Cloudflare\API\Auth\APIKey('user@example.com', 'apiKey');
string $zoneID, $adapter = new Cloudflare\API\Adapter\Guzzle($key);
string $type, $user = new Cloudflare\API\Endpoints\User($adapter);
string $name,
string $content, echo $user->getUserID();
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.

View File

@@ -1,15 +1,14 @@
{ {
"name": "yuemi/cloudflare-php", "name": "cloudflare/sdk",
"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": "^7.0.1", "guzzlehttp/guzzle": "^6.2.2",
"php": ">=7.2.5", "php": ">=7.0.0",
"psr/http-message": "^1.0 || ^2.0", "psr/http-message": "~1.0"
"ext-json": "*"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^5.7", "phpunit/phpunit": "5.7.5",
"phpmd/phpmd" : "@stable", "phpmd/phpmd" : "@stable",
"friendsofphp/php-cs-fixer": "^2.6" "friendsofphp/php-cs-fixer": "^2.6"
}, },
@@ -29,10 +28,5 @@
"classmap": [ "classmap": [
"tests/" "tests/"
] ]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
} }
} }

3060
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -31,46 +31,46 @@ interface Adapter
* RFCs, it is never useful). * RFCs, it is never useful).
* *
* @param string $uri * @param string $uri
* @param array $data * @param array $query
* @param array $headers * @param array $headers
* *
* @return mixed * @return mixed
*/ */
public function get(string $uri, array $data = [], array $headers = []): ResponseInterface; public function get(string $uri, array $query, array $headers): ResponseInterface;
/** /**
* @param string $uri * @param string $uri
* @param array $data
* @param array $headers * @param array $headers
* @param array $body
* *
* @return mixed * @return mixed
*/ */
public function post(string $uri, array $data = [], array $headers = []): ResponseInterface; public function post(string $uri, array $headers, array $body): ResponseInterface;
/** /**
* @param string $uri * @param string $uri
* @param array $data
* @param array $headers * @param array $headers
* @param array $body
* *
* @return mixed * @return mixed
*/ */
public function put(string $uri, array $data = [], array $headers = []): ResponseInterface; public function put(string $uri, array $headers, array $body): ResponseInterface;
/** /**
* @param string $uri * @param string $uri
* @param array $data
* @param array $headers * @param array $headers
* @param array $body
* *
* @return mixed * @return mixed
*/ */
public function patch(string $uri, array $data = [], array $headers = []): ResponseInterface; public function patch(string $uri, array $headers, array $body): ResponseInterface;
/** /**
* @param string $uri * @param string $uri
* @param array $data
* @param array $headers * @param array $headers
* @param array $body
* *
* @return mixed * @return mixed
*/ */
public function delete(string $uri, array $data = [], array $headers = []): ResponseInterface; public function delete(string $uri, array $headers, array $body): ResponseInterface;
} }

View File

@@ -1,10 +1,14 @@
<?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
@@ -33,89 +37,96 @@ class Guzzle implements Adapter
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function get(string $uri, array $data = [], array $headers = []): ResponseInterface public function get(string $uri, array $query = [], array $headers = []): ResponseInterface
{ {
return $this->request('get', $uri, $data, $headers); $response = $this->client->get($uri, ['query' => $query, 'headers' => $headers]);
}
/**
* @inheritDoc
*/
public function post(string $uri, array $data = [], array $headers = []): ResponseInterface
{
return $this->request('post', $uri, $data, $headers);
}
/**
* @inheritDoc
*/
public function put(string $uri, array $data = [], array $headers = []): ResponseInterface
{
return $this->request('put', $uri, $data, $headers);
}
/**
* @inheritDoc
*/
public function patch(string $uri, array $data = [], array $headers = []): ResponseInterface
{
return $this->request('patch', $uri, $data, $headers);
}
/**
* @inheritDoc
*/
public function delete(string $uri, array $data = [], array $headers = []): ResponseInterface
{
return $this->request('delete', $uri, $data, $headers);
}
/**
* @SuppressWarnings(PHPMD.StaticAccess)
*/
public function request(string $method, string $uri, array $data = [], array $headers = [])
{
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) {
throw new \InvalidArgumentException('Request method must be get, post, put, patch, or delete');
}
try {
$response = $this->client->$method($uri, [
'headers' => $headers,
($method === 'get' ? 'query' : 'json') => $data,
]);
} catch (RequestException $err) {
throw ResponseException::fromRequestException($err);
}
$this->checkError($response);
return $response; return $response;
} }
/** /**
* @SuppressWarnings(PHPMD.StaticAccess) * @inheritDoc
*/ */
public function requestMultiPart(string $method, string $uri, array $data = [], array $headers = []) { public function post(string $uri, array $headers = [], array $body = []): ResponseInterface
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) { {
throw new \InvalidArgumentException('Request method must be get, post, put, patch, or delete'); $response = $this->client->post(
} $uri,
[
$multipart = [];
foreach( $data as $key => $value ) {
$multipart[] = [
'name' => $key,
'contents' => $value
];
}
try {
$response = $this->client->$method($uri, [
'headers' => $headers, 'headers' => $headers,
'multipart' => $multipart 'json' => $body
]); ]
} catch (RequestException $err) { );
throw ResponseException::fromRequestException($err);
$this->checkError($response);
return $response;
}
/**
* @inheritDoc
*/
public function put(string $uri, array $headers = [], array $body = []): ResponseInterface
{
$response = $this->client->put(
$uri,
[
'headers' => $headers,
'json' => $body
]
);
$this->checkError($response);
return $response;
}
/**
* @inheritDoc
*/
public function patch(string $uri, array $headers = [], array $body = []): ResponseInterface
{
$response = $this->client->patch(
$uri,
[
'headers' => $headers,
'json' => $body
]
);
$this->checkError($response);
return $response;
}
/**
* @inheritDoc
*/
public function delete(string $uri, array $headers = [], array $body = []): ResponseInterface
{
$response = $this->client->delete(
$uri,
[
'headers' => $headers,
'json' => $body
]
);
$this->checkError($response);
return $response;
}
private function checkError(ResponseInterface $response)
{
$json = json_decode($response->getBody());
if (json_last_error() !== JSON_ERROR_NONE) {
throw new JSONException();
} }
return $response; if (isset($json->errors) && count($json->errors) >= 1) {
throw new ResponseException($json->errors[0]->message, $json->errors[0]->code);
}
if (isset($json->success) && !$json->success) {
throw new ResponseException('Request was unsuccessful.');
}
} }
} }

View File

@@ -8,37 +8,6 @@
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);
}
} }

View File

@@ -1,25 +0,0 @@
<?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
];
}
}

View File

@@ -21,11 +21,6 @@ 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;

View File

@@ -1,58 +0,0 @@
<?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;
}
}

View File

@@ -1,69 +0,0 @@
<?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;
}
}
}

View File

@@ -1,46 +0,0 @@
<?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';
}
}

View File

@@ -1,178 +0,0 @@
<?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;
}
}

27
src/Configurations/PageRulesActions.php Executable file → Normal file
View File

@@ -33,13 +33,6 @@ 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', [
@@ -117,7 +110,7 @@ class PageRulesActions implements Configurations
public function setEdgeCacheTTL(int $value) public function setEdgeCacheTTL(int $value)
{ {
if ($value > 2678400) { if ($value > 2419200) {
throw new ConfigurationsException('Edge Cache TTL too high.'); throw new ConfigurationsException('Edge Cache TTL too high.');
} }
@@ -139,18 +132,16 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException('Status Codes can only be 301 or 302.'); throw new ConfigurationsException('Status Codes can only be 301 or 302.');
} }
$this->addConfigurationOption("forwarding_url", [ $this->addConfigurationOption('forwarding_url', [
'value' => [ 'status_code' => $statusCode,
'status_code' => $statusCode, 'url' => $forwardingUrl,
'url' => $forwardingUrl,
],
]); ]);
} }
public function setHostHeaderOverride(string $value) public function setHostHeaderOverride(bool $active)
{ {
$this->addConfigurationOption('host_header_override', [ $this->addConfigurationOption('host_header_override', [
'value' => $value 'value' => $this->getBoolAsOnOrOff($active)
]); ]);
} }
@@ -205,7 +196,7 @@ class PageRulesActions implements Configurations
]); ]);
} }
public function setResolveOverride(string $value) public function setResolveOverride(bool $value)
{ {
$this->addConfigurationOption('resolve_override', [ $this->addConfigurationOption('resolve_override', [
'value' => $value 'value' => $value
@@ -268,7 +259,7 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.'); throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.');
} }
$this->addConfigurationOption('ssl', [ $this->addConfigurationOption('smart_errors', [
'value' => $value 'value' => $value
]); ]);
} }
@@ -310,7 +301,7 @@ class PageRulesActions implements Configurations
{ {
$configuration['id'] = $setting; $configuration['id'] = $setting;
array_push($this->configs, $configuration); $this->configs[] = (object) $configuration;
} }
private function getBoolAsOnOrOff(bool $value): string private function getBoolAsOnOrOff(bool $value): string

View File

@@ -15,9 +15,9 @@ class PageRulesTargets implements Configurations
public function __construct(string $queryUrl) public function __construct(string $queryUrl)
{ {
$this->targets = [ $this->targets = [
[ (object)[
'target' => 'url', 'target' => 'url',
'constraint' => [ 'constraint' => (object)[
'operator' => 'matches', 'operator' => 'matches',
'value' => $queryUrl 'value' => $queryUrl
] ]

View File

@@ -1,121 +0,0 @@
<?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;
}
}

View File

@@ -14,7 +14,7 @@ class UARules implements Configurations
public function addUA(string $value) public function addUA(string $value)
{ {
$this->configs[] = ['target' => 'ua', 'value' => $value]; $this->configs[] = (object)['target' => 'ua', 'value' => $value];
} }
public function getArray(): array public function getArray(): array

View File

@@ -14,12 +14,12 @@ class ZoneLockdown implements Configurations
public function addIP(string $value) public function addIP(string $value)
{ {
$this->configs[] = ['target' => 'ip', 'value' => $value]; $this->configs[] = (object)['target' => 'ip', 'value' => $value];
} }
public function addIPRange(string $value) public function addIPRange(string $value)
{ {
$this->configs[] = ['target' => 'ip_range', 'value' => $value]; $this->configs[] = (object)['target' => 'ip_range', 'value' => $value];
} }
public function getArray(): array public function getArray(): array

View File

@@ -4,12 +4,9 @@ namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Configurations\Configurations; use Cloudflare\API\Configurations\Configurations;
use Cloudflare\API\Traits\BodyAccessorTrait;
class AccessRules implements API class AccessRules implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -80,10 +77,10 @@ class AccessRules implements API
$query['notes'] = $notes; $query['notes'] = $notes;
} }
$data = $this->adapter->get('zones/' . $zoneID . '/firewall/access_rules/rules', $query); $data = $this->adapter->get('zones/' . $zoneID . '/firewall/access_rules/rules', $query, []);
$this->body = json_decode($data->getBody()); $body = json_decode($data->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function createRule( public function createRule(
@@ -94,18 +91,18 @@ class AccessRules implements API
): bool { ): bool {
$options = [ $options = [
'mode' => $mode, 'mode' => $mode,
'configuration' => $configuration->getArray() 'configuration' => (object) $configuration->getArray()
]; ];
if ($notes !== null) { if ($notes !== null) {
$options['notes'] = $notes; $options['notes'] = $notes;
} }
$query = $this->adapter->post('zones/' . $zoneID . '/firewall/access_rules/rules', $options); $query = $this->adapter->post('zones/' . $zoneID . '/firewall/access_rules/rules', [], $options);
$this->body = json_decode($query->getBody()); $body = json_decode($query->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -126,11 +123,11 @@ class AccessRules implements API
$options['notes'] = $notes; $options['notes'] = $notes;
} }
$query = $this->adapter->patch('zones/' . $zoneID . '/firewall/access_rules/rules/' . $ruleID, $options); $query = $this->adapter->patch('zones/' . $zoneID . '/firewall/access_rules/rules/' . $ruleID, [], $options);
$this->body = json_decode($query->getBody()); $body = json_decode($query->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -143,11 +140,11 @@ class AccessRules implements API
'cascade' => $cascade 'cascade' => $cascade
]; ];
$data = $this->adapter->delete('zones/' . $zoneID . '/firewall/access_rules/rules/' . $ruleID, $options); $data = $this->adapter->delete('zones/' . $zoneID . '/firewall/access_rules/rules/' . $ruleID, [], $options);
$this->body = json_decode($data->getBody()); $body = json_decode($data->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }

View File

@@ -1,50 +0,0 @@
<?php
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class AccountMembers implements API
{
use BodyAccessorTrait;
/**
* @var Adapter
*/
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function addAccountMember(string $accountId, string $email, array $roles): \stdClass
{
$options = [
'email' => $email,
'roles' => $roles,
];
$account = $this->adapter->post('accounts/' . $accountId . '/members', $options);
$this->body = json_decode($account->getBody());
return $this->body->result;
}
public function listAccountMembers(string $accountId, int $page = 1, int $perPage = 20): \stdClass
{
$query = [
'page' => $page,
'per_page' => $perPage,
];
$zone = $this->adapter->get('accounts/' . $accountId . '/members', $query);
$this->body = json_decode($zone->getBody());
return (object)[
'result' => $this->body->result,
'result_info' => $this->body->result_info,
];
}
}

View File

@@ -1,33 +0,0 @@
<?php
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
use stdClass;
class AccountRoles implements API
{
use BodyAccessorTrait;
/**
* @var Adapter
*/
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function listAccountRoles(string $accountId): stdClass
{
$roles = $this->adapter->get('accounts/' . $accountId . '/roles');
$this->body = json_decode($roles->getBody());
return (object)[
'result' => $this->body->result,
'result_info' => $this->body->result_info,
];
}
}

View File

@@ -1,88 +0,0 @@
<?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 addAccount(string $name, string $type = 'standard'): \stdClass
{
$options = [
'name' => $name,
'type' => $type,
];
$account = $this->adapter->post('accounts', $options);
$this->body = json_decode($account->getBody());
return $this->body->result;
}
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;
}
}

View File

@@ -1,86 +0,0 @@
<?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;
}
}

View File

@@ -1,95 +0,0 @@
<?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;
}
}

View File

@@ -1,240 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 18/03/2018
* Time: 21:46
*/
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class CustomHostnames implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
/**
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*
* @param string $zoneID
* @param string $hostname
* @param string $sslMethod
* @param string $sslType
* @param array $sslSettings
* @param string $customOriginServer
* @param bool $wildcard
* @param string $bundleMethod
* @param array $customSsl
* @return \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 = [
'hostname' => $hostname,
'ssl' => [
'method' => $sslMethod,
'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);
$this->body = json_decode($zone->getBody());
return $this->body->result;
}
/**
* @param string $zoneID
* @param string $hostname
* @param string $id
* @param int $page
* @param int $perPage
* @param string $order
* @param string $direction
* @param int $ssl
* @return \stdClass
*/
public function listHostnames(
string $zoneID,
string $hostname = '',
string $hostnameID = '',
int $page = 1,
int $perPage = 20,
string $order = '',
string $direction = '',
int $ssl = 0
): \stdClass {
$query = [
'page' => $page,
'per_page' => $perPage,
'ssl' => $ssl
];
if (!empty($hostname)) {
$query['hostname'] = $hostname;
}
if (!empty($hostnameID)) {
$query['id'] = $hostnameID;
}
if (!empty($order)) {
$query['order'] = $order;
}
if (!empty($direction)) {
$query['direction'] = $direction;
}
$zone = $this->adapter->get('zones/'.$zoneID.'/custom_hostnames', $query);
$this->body = json_decode($zone->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info];
}
/**
* @param string $zoneID
* @param string $hostnameID
* @return mixed
*/
public function getHostname(string $zoneID, string $hostnameID)
{
$zone = $this->adapter->get('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID);
$this->body = json_decode($zone->getBody());
return $this->body->result;
}
/**
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
*
* @param string $zoneID
* @param string $hostnameID
* @param string $sslMethod
* @param string $sslType
* @param array $sslSettings
* @param string $customOriginServer
* @param bool|null $wildcard
* @param string $bundleMethod
* @param array $customSsl
* @return \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 = [];
$options = [];
if (!empty($sslMethod)) {
$query['method'] = $sslMethod;
}
if (!empty($sslType)) {
$query['type'] = $sslType;
}
if (!empty($sslSettings)) {
$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);
$this->body = json_decode($zone->getBody());
return $this->body->result;
}
/**
* @param string $zoneID
* @param string $hostnameID
* @return \stdClass
*/
public function deleteHostname(string $zoneID, string $hostnameID): \stdClass
{
$zone = $this->adapter->delete('zones/'.$zoneID.'/custom_hostnames/'.$hostnameID);
$this->body = json_decode($zone->getBody());
return $this->body;
}
/**
* @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;
}
}

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class DNS implements API class DNS implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -31,9 +28,7 @@ class DNS implements API
* @param string $content * @param string $content
* @param int $ttl * @param int $ttl
* @param bool $proxied * @param bool $proxied
* @param string $priority * @return bool
* @param array $data
* @return \stdClass
*/ */
public function addRecord( public function addRecord(
string $zoneID, string $zoneID,
@@ -41,10 +36,8 @@ class DNS implements API
string $name, string $name,
string $content, string $content,
int $ttl = 0, int $ttl = 0,
bool $proxied = true, bool $proxied = true
string $priority = '', ): bool {
array $data = []
): \stdClass {
$options = [ $options = [
'type' => $type, 'type' => $type,
'name' => $name, 'name' => $name,
@@ -56,34 +49,15 @@ class DNS implements API
$options['ttl'] = $ttl; $options['ttl'] = $ttl;
} }
if (is_numeric($priority)) { $user = $this->adapter->post('zones/' . $zoneID . '/dns_records', [], $options);
$options['priority'] = (int)$priority;
} $body = json_decode($user->getBody());
if (!empty($data)) { if (isset($body->result->id)) {
$options['data'] = $data; return true;
} }
$user = $this->adapter->post('zones/' . $zoneID . '/dns_records', $options); return false;
$this->body = json_decode($user->getBody());
$result = $this->body->result;
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 $result;
} }
public function listRecords( public function listRecords(
@@ -123,42 +97,32 @@ class DNS implements API
$query['direction'] = $direction; $query['direction'] = $direction;
} }
$user = $this->adapter->get('zones/' . $zoneID . '/dns_records', $query); $user = $this->adapter->get('zones/' . $zoneID . '/dns_records', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function getRecordDetails(string $zoneID, string $recordID): \stdClass public function getRecordDetails(string $zoneID, string $recordID): \stdClass
{ {
$user = $this->adapter->get('zones/' . $zoneID . '/dns_records/' . $recordID); $user = $this->adapter->get('zones/' . $zoneID . '/dns_records/' . $recordID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $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);
$this->body = json_decode($response->getBody()); return json_decode($response->getBody());
return $this->body;
} }
public function deleteRecord(string $zoneID, string $recordID): bool public function deleteRecord(string $zoneID, string $recordID): bool
{ {
$user = $this->adapter->delete('zones/' . $zoneID . '/dns_records/' . $recordID); $user = $this->adapter->delete('zones/' . $zoneID . '/dns_records/' . $recordID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }

View File

@@ -1,144 +0,0 @@
<?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;
}
}

View File

@@ -1,120 +0,0 @@
<?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;
}
}

View File

@@ -1,135 +0,0 @@
<?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;
}
}

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class IPs implements API class IPs implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -24,9 +21,9 @@ class IPs implements API
public function listIPs(): \stdClass public function listIPs(): \stdClass
{ {
$ips = $this->adapter->get('ips'); $ips = $this->adapter->get('ips', [], []);
$this->body = json_decode($ips->getBody()); $body = json_decode($ips->getBody());
return $this->body->result; return $body->result;
} }
} }

View File

@@ -1,157 +0,0 @@
<?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;
}
}

View File

@@ -1,83 +0,0 @@
<?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;
}
}

View File

@@ -11,12 +11,9 @@ namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Configurations\PageRulesActions; use Cloudflare\API\Configurations\PageRulesActions;
use Cloudflare\API\Configurations\PageRulesTargets; use Cloudflare\API\Configurations\PageRulesTargets;
use Cloudflare\API\Traits\BodyAccessorTrait;
class PageRules implements API class PageRules implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -55,11 +52,11 @@ class PageRules implements API
} }
$query = $this->adapter->post('zones/' . $zoneID . '/pagerules', $options); $query = $this->adapter->post('zones/' . $zoneID . '/pagerules', [], $options);
$this->body = json_decode($query->getBody()); $body = json_decode($query->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -73,19 +70,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.');
} }
@@ -96,53 +93,21 @@ class PageRules implements API
'match' => $match 'match' => $match
]; ];
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules', $query); $user = $this->adapter->get('zones/' . $zoneID . '/pagerules', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function getPageRuleDetails(string $zoneID, string $ruleID): \stdClass public function getPageRuleDetails(string $zoneID, string $ruleID): \stdClass
{ {
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules/' . $ruleID); $user = $this->adapter->get('zones/' . $zoneID . '/pagerules/' . $ruleID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $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,
@@ -166,11 +131,12 @@ class PageRules implements API
$options['priority'] = $priority; $options['priority'] = $priority;
} }
$query = $this->adapter->patch('zones/' . $zoneID . '/pagerules/' . $ruleID, $options);
$this->body = json_decode($query->getBody()); $query = $this->adapter->patch('zones/' . $zoneID . '/pagerules', [], $options);
if (isset($this->body->result->id)) { $body = json_decode($query->getBody());
if (isset($body->result->id)) {
return true; return true;
} }
@@ -179,11 +145,11 @@ class PageRules implements API
public function deletePageRule(string $zoneID, string $ruleID): bool public function deletePageRule(string $zoneID, string $ruleID): bool
{ {
$user = $this->adapter->delete('zones/' . $zoneID . '/pagerules/' . $ruleID); $user = $this->adapter->delete('zones/' . $zoneID . '/pagerules/' . $ruleID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }

View File

@@ -1,156 +0,0 @@
<?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;
}
}

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class Railgun implements API class Railgun implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -29,10 +26,10 @@ class Railgun implements API
'name' => $name, 'name' => $name,
]; ];
$user = $this->adapter->post('railguns', $query); $user = $this->adapter->post('railguns', [], $query);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body; return $body;
} }
public function list( public function list(
@@ -49,28 +46,28 @@ class Railgun implements API
$query['direction'] = $direction; $query['direction'] = $direction;
} }
$user = $this->adapter->get('railguns', $query); $user = $this->adapter->get('railguns', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function get( public function get(
string $railgunID string $railgunID
): \stdClass { ): \stdClass {
$user = $this->adapter->get('railguns/' . $railgunID); $user = $this->adapter->get('railguns/' . $railgunID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function getZones( public function getZones(
string $railgunID string $railgunID
): \stdClass { ): \stdClass {
$user = $this->adapter->get('railguns/' . $railgunID . '/zones'); $user = $this->adapter->get('railguns/' . $railgunID . '/zones', [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function update( public function update(
@@ -81,19 +78,19 @@ class Railgun implements API
'enabled' => $status 'enabled' => $status
]; ];
$user = $this->adapter->patch('railguns/' . $railgunID, $query); $user = $this->adapter->patch('railguns/' . $railgunID, [], $query);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function delete( public function delete(
string $railgunID string $railgunID
): bool { ): bool {
$user = $this->adapter->delete('railguns/' . $railgunID); $user = $this->adapter->delete('railguns/' . $railgunID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }

View File

@@ -1,117 +0,0 @@
<?php
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class RulesLists implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function getLists(string $accountId)
{
$response = $this->adapter->get('accounts/' . $accountId . '/rules/lists');
$this->body = json_decode($response->getBody());
return $this->body->result;
}
public function getListDetails(string $accountId, string $listId)
{
$response = $this->adapter->get('accounts/' . $accountId . '/rules/lists/' . $listId);
$this->body = json_decode($response->getBody());
return $this->body->result;
}
public function getListItems(string $accountId, string $listId, string $search = '', int $itemsPerPage = 20, string $cursor = '')
{
$options = [
'per_page' => $itemsPerPage,
];
if ($search) {
$options['search'] = $search;
}
if ($cursor) {
$options['cursor'] = $cursor;
}
$response = $this->adapter->get('accounts/' . $accountId . '/rules/lists/' . $listId . '/items', $options);
$this->body = json_decode($response->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info ?? null];
}
public function createList(string $accountId, string $kind, string $name, string $description = '')
{
$options = [
'kind' => $kind,
'name' => $name,
];
if ($description) {
$options['description'] = $description;
}
$response = $this->adapter->post('accounts/' . $accountId . '/rules/lists', $options);
$this->body = json_decode($response->getBody());
return $this->body->result;
}
public function deleteList(string $accountId, string $listId)
{
$response = $this->adapter->delete('accounts/' . $accountId . '/rules/lists/' . $listId);
$this->body = json_decode($response->getBody());
return $this->body->result;
}
public function createListItem(string $accountId, string $listId, array $ip)
{
$options = [];
foreach ($ip as $ipAddress) {
$options[] = ['ip' => $ipAddress];
}
$response = $this->adapter->post('accounts/' . $accountId . '/rules/lists/' . $listId . '/items', $options);
$this->body = json_decode($response->getBody());
return $this->body->result;
}
public function deleteListItem(string $accountId, string $listId, array $itemIds)
{
$options = ['items' => []];
foreach ($itemIds as $itemId) {
$options['items'][] = ['id' => $itemId];
}
$response = $this->adapter->delete('accounts/' . $accountId . '/rules/lists/' . $listId . '/items', $options);
$this->body = json_decode($response->getBody());
return $this->body->result;
}
public function getOperationStatus(string $accountId, string $operationId)
{
$response = $this->adapter->get('accounts/' . $accountId . '/rules/lists/bulk_operations/' . $operationId);
$this->body = json_decode($response->getBody());
return $this->body->result;
}
}

View File

@@ -1,183 +0,0 @@
<?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;
}
}

View File

@@ -1,121 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: Jurgen Coetsiers
* Date: 21/10/2018
* Time: 09:10
*/
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
class TLS implements API
{
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
/**
* 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)
{
$return = $this->adapter->patch(
'zones/' . $zoneID . '/settings/tls_1_3',
['value' => 'on']
);
$body = json_decode($return->getBody());
if (isset($body->success) && $body->success == true) {
return true;
}
return false;
}
/**
* Disable TLS 1.3 for the zone
*
* @param string $zoneID The ID of the zone
* @return bool
*/
public function disableTLS13($zoneID)
{
$return = $this->adapter->patch(
'zones/' . $zoneID . '/settings/tls_1_3',
['value' => 'off']
);
$body = json_decode($return->getBody());
if (isset($body->success) && $body->success == true) {
return true;
}
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)
{
$return = $this->adapter->patch(
'zones/' . $zoneID . '/settings/min_tls_version',
[
'value' => $minimumVersion,
]
);
$body = json_decode($return->getBody());
if (isset($body->success) && $body->success == 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;
}
}

View File

@@ -10,12 +10,9 @@ namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Configurations\Configurations; use Cloudflare\API\Configurations\Configurations;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class UARules implements API class UARules implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -33,10 +30,10 @@ class UARules implements API
'per_page' => $perPage 'per_page' => $perPage
]; ];
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules', $query); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function createRule( public function createRule(
@@ -59,11 +56,11 @@ class UARules implements API
$options['description'] = $description; $options['description'] = $description;
} }
$user = $this->adapter->post('zones/' . $zoneID . '/firewall/ua_rules', $options); $user = $this->adapter->post('zones/' . $zoneID . '/firewall/ua_rules', [], $options);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -72,9 +69,9 @@ class UARules implements API
public function getRuleDetails(string $zoneID, string $blockID): \stdClass public function getRuleDetails(string $zoneID, string $blockID): \stdClass
{ {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules/' . $blockID); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules/' . $blockID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function updateRule( public function updateRule(
@@ -94,11 +91,11 @@ class UARules implements API
$options['description'] = $description; $options['description'] = $description;
} }
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, $options); $user = $this->adapter->put('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, [], $options);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -107,11 +104,11 @@ class UARules implements API
public function deleteRule(string $zoneID, string $ruleID): bool public function deleteRule(string $zoneID, string $ruleID): bool
{ {
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID); $user = $this->adapter->delete('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }

View File

@@ -8,12 +8,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class User implements API class User implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -23,9 +20,9 @@ class User implements API
public function getUserDetails(): \stdClass public function getUserDetails(): \stdClass
{ {
$user = $this->adapter->get('user'); $user = $this->adapter->get('user', [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function getUserID(): string public function getUserID(): string
@@ -40,8 +37,7 @@ class User implements API
public function updateUserDetails(array $details): \stdClass public function updateUserDetails(array $details): \stdClass
{ {
$response = $this->adapter->patch('user', $details); $response = $this->adapter->patch('user', [], $details);
$this->body = json_decode($response->getBody()); return json_decode($response->getBody());
return $this->body;
} }
} }

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class WAF implements API class WAF implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -44,10 +41,10 @@ class WAF implements API
$query['direction'] = $direction; $query['direction'] = $direction;
} }
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages', $query); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
@@ -55,10 +52,10 @@ class WAF implements API
string $zoneID, string $zoneID,
string $packageID string $packageID
): \stdClass { ): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function getRules( public function getRules(
@@ -83,10 +80,10 @@ class WAF implements API
if (!empty($direction)) { if (!empty($direction)) {
$query['direction'] = $direction; $query['direction'] = $direction;
} }
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules', $query); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function getRuleInfo( public function getRuleInfo(
@@ -94,10 +91,14 @@ class WAF implements API
string $packageID, string $packageID,
string $ruleID string $ruleID
): \stdClass { ): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID); $user = $this->adapter->get(
$this->body = json_decode($user->getBody()); 'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
[],
[]
);
$body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function updateRule( public function updateRule(
@@ -112,11 +113,12 @@ class WAF implements API
$user = $this->adapter->patch( $user = $this->adapter->patch(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID, 'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
[],
$query $query
); );
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function getGroups( public function getGroups(
@@ -144,11 +146,12 @@ class WAF implements API
$user = $this->adapter->get( $user = $this->adapter->get(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups', 'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups',
$query $query,
[]
); );
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function getGroupInfo( public function getGroupInfo(
@@ -156,10 +159,14 @@ class WAF implements API
string $packageID, string $packageID,
string $groupID string $groupID
): \stdClass { ): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID); $user = $this->adapter->get(
$this->body = json_decode($user->getBody()); 'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
[],
[]
);
$body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function updateGroup( public function updateGroup(
@@ -174,10 +181,11 @@ class WAF implements API
$user = $this->adapter->patch( $user = $this->adapter->patch(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID, 'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
[],
$query $query
); );
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
} }

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class ZoneLockdown implements API class ZoneLockdown implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -32,10 +29,10 @@ class ZoneLockdown implements API
'per_page' => $perPage 'per_page' => $perPage
]; ];
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns', $query); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function createLockdown( public function createLockdown(
@@ -58,11 +55,11 @@ class ZoneLockdown implements API
$options['description'] = $description; $options['description'] = $description;
} }
$user = $this->adapter->post('zones/' . $zoneID . '/firewall/lockdowns', $options); $user = $this->adapter->post('zones/' . $zoneID . '/firewall/lockdowns', [], $options);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -71,9 +68,9 @@ class ZoneLockdown implements API
public function getLockdownDetails(string $zoneID, string $lockdownID): \stdClass public function getLockdownDetails(string $zoneID, string $lockdownID): \stdClass
{ {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID); $user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function updateLockdown( public function updateLockdown(
@@ -93,11 +90,11 @@ class ZoneLockdown implements API
$options['description'] = $description; $options['description'] = $description;
} }
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, $options); $user = $this->adapter->put('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], $options);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
@@ -106,11 +103,11 @@ class ZoneLockdown implements API
public function deleteLockdown(string $zoneID, string $lockdownID): bool public function deleteLockdown(string $zoneID, string $lockdownID): bool
{ {
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID); $user = $this->adapter->delete('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }

View File

@@ -1,245 +0,0 @@
<?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;
}
}

View File

@@ -1,51 +0,0 @@
<?php
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
use stdClass;
class ZoneSubscriptions implements API
{
use BodyAccessorTrait;
/**
* @var Adapter
*/
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function listZoneSubscriptions(string $zoneId): \stdClass
{
$user = $this->adapter->get('zones/' . $zoneId . '/subscriptions');
$this->body = json_decode($user->getBody());
return (object)[
'result' => $this->body->result,
];
}
public function addZoneSubscription(string $zoneId, string $ratePlanId = ''): stdClass
{
$options = [];
if (empty($ratePlanId) === false) {
$options['rate_plan'] = [
'id' => $ratePlanId,
];
}
$existingSubscription = $this->listZoneSubscriptions($zoneId);
$method = empty($existingSubscription->result) ? 'post' : 'put';
$subscription = $this->adapter->{$method}('zones/' . $zoneId . '/subscription', $options);
$this->body = json_decode($subscription->getBody());
return $this->body->result;
}
}

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class Zones implements API class Zones implements API
{ {
use BodyAccessorTrait;
private $adapter; private $adapter;
public function __construct(Adapter $adapter) public function __construct(Adapter $adapter)
@@ -27,72 +24,37 @@ class Zones implements API
* *
* @param string $name * @param string $name
* @param bool $jumpStart * @param bool $jumpStart
* @param string $accountId * @param string $organizationID
* @return \stdClass * @return \stdClass
*/ */
public function addZone(string $name, bool $jumpStart = false, string $accountId = ''): \stdClass public function addZone(string $name, bool $jumpStart = false, string $organizationID = ''): \stdClass
{ {
$options = [ $options = [
'name' => $name, 'name' => $name,
'jump_start' => $jumpStart 'jump_start' => $jumpStart
]; ];
if (!empty($accountId)) { if (!empty($organizationID)) {
$options['account'] = [ $options['organization'] = (object)['id' => $organizationID];
'id' => $accountId,
];
} }
$user = $this->adapter->post('zones', $options); $user = $this->adapter->post('zones', [], $options);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return $this->body->result; return $body->result;
} }
public function activationCheck(string $zoneID): bool public function activationCheck(string $zoneID): bool
{ {
$user = $this->adapter->put('zones/' . $zoneID . '/activation_check'); $user = $this->adapter->put('zones/' . $zoneID . '/activation_check', [], []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
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 = '',
@@ -124,10 +86,10 @@ class Zones implements API
$query['direction'] = $direction; $query['direction'] = $direction;
} }
$user = $this->adapter->get('zones', $query); $user = $this->adapter->get('zones', $query, []);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
return (object)['result' => $this->body->result, 'result_info' => $this->body->result_info]; return (object)['result' => $body->result, 'result_info' => $body->result_info];
} }
public function getZoneID(string $name = ''): string public function getZoneID(string $name = ''): string
@@ -152,11 +114,9 @@ class Zones implements API
*/ */
public function getAnalyticsDashboard(string $zoneID, string $since = '-10080', string $until = '0', bool $continuous = true): \stdClass public function getAnalyticsDashboard(string $zoneID, string $since = '-10080', string $until = '0', bool $continuous = true): \stdClass
{ {
$response = $this->adapter->get('zones/' . $zoneID . '/analytics/dashboard', ['since' => $since, 'until' => $until, 'continuous' => var_export($continuous, true)]); $response = $this->adapter->get('zones/' . $zoneID . '/analytics/dashboard', ['since' => $since, 'until' => $until, 'continuous' => var_export($continuous, true)], []);
$this->body = $response->getBody(); return json_decode($response->getBody())->result;
return json_decode($this->body)->result;
} }
/** /**
@@ -168,49 +128,17 @@ class Zones implements API
*/ */
public function changeDevelopmentMode(string $zoneID, bool $enable = false): bool public function changeDevelopmentMode(string $zoneID, bool $enable = false): bool
{ {
$response = $this->adapter->patch('zones/' . $zoneID . '/settings/development_mode', ['value' => $enable ? 'on' : 'off']); $response = $this->adapter->patch('zones/' . $zoneID . '/settings/development_mode', [], ['value' => $enable ? 'on' : 'off']);
$this->body = json_decode($response->getBody()); $body = json_decode($response->getBody());
if ($this->body->success) { if ($body->success) {
return true; return true;
} }
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
@@ -219,55 +147,33 @@ class Zones implements API
*/ */
public function cachePurgeEverything(string $zoneID): bool public function cachePurgeEverything(string $zoneID): bool
{ {
$user = $this->adapter->post('zones/' . $zoneID . '/purge_cache', ['purge_everything' => true]); $user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', [], ['purge_everything' => true]);
$this->body = json_decode($user->getBody()); $body = json_decode($user->getBody());
if (isset($this->body->result->id)) { if (isset($body->result->id)) {
return true; return true;
} }
return false; return false;
} }
public function cachePurge(string $zoneID, array $files = null, array $tags = null, array $hosts = null): bool public function cachePurge(string $zoneID, array $files = null, array $tags = null): bool
{ {
if ($files === null && $tags === null && $hosts === null) { if ($files === null && $tags === null) {
throw new EndpointException('No files, tags or hosts to purge.'); throw new EndpointException('No files or tags to purge.');
} }
$options = []; $options = [
if (!is_null($files)) { 'files' => $files,
$options['files'] = $files; 'tags' => $tags
} ];
if (!is_null($tags)) { $user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', [], $options);
$options['tags'] = $tags;
}
if (!is_null($hosts)) { $body = json_decode($user->getBody());
$options['hosts'] = $hosts;
}
$user = $this->adapter->post('zones/' . $zoneID . '/purge_cache', $options); if (isset($body->result->id)) {
$this->body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
return true;
}
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 true;
} }

View File

@@ -1,13 +0,0 @@
<?php
namespace Cloudflare\API\Traits;
trait BodyAccessorTrait
{
private $body;
public function getBody()
{
return $this->body;
}
}

View File

@@ -1,6 +1,12 @@
<?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
{ {
@@ -35,7 +41,7 @@ class GuzzleTest extends TestCase
public function testPost() public function testPost()
{ {
$response = $this->client->post('https://httpbin.org/post', ['X-Post-Test' => 'Testing a POST request.']); $response = $this->client->post('https://httpbin.org/post', [], ['X-Post-Test' => 'Testing a POST request.']);
$headers = $response->getHeaders(); $headers = $response->getHeaders();
$this->assertEquals('application/json', $headers['Content-Type'][0]); $this->assertEquals('application/json', $headers['Content-Type'][0]);
@@ -46,7 +52,7 @@ class GuzzleTest extends TestCase
public function testPut() public function testPut()
{ {
$response = $this->client->put('https://httpbin.org/put', ['X-Put-Test' => 'Testing a PUT request.']); $response = $this->client->put('https://httpbin.org/put', [], ['X-Put-Test' => 'Testing a PUT request.']);
$headers = $response->getHeaders(); $headers = $response->getHeaders();
$this->assertEquals('application/json', $headers['Content-Type'][0]); $this->assertEquals('application/json', $headers['Content-Type'][0]);
@@ -59,6 +65,7 @@ class GuzzleTest extends TestCase
{ {
$response = $this->client->patch( $response = $this->client->patch(
'https://httpbin.org/patch', 'https://httpbin.org/patch',
[],
['X-Patch-Test' => 'Testing a PATCH request.'] ['X-Patch-Test' => 'Testing a PATCH request.']
); );
@@ -73,6 +80,7 @@ class GuzzleTest extends TestCase
{ {
$response = $this->client->delete( $response = $this->client->delete(
'https://httpbin.org/delete', 'https://httpbin.org/delete',
[],
['X-Delete-Test' => 'Testing a DELETE request.'] ['X-Delete-Test' => 'Testing a DELETE request.']
); );
@@ -83,15 +91,48 @@ 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 testNotFound() public function testErrors()
{ {
$this->expectException(ResponseException::class); $class = new ReflectionClass(\Cloudflare\API\Adapter\Guzzle::class);
$this->client->get('https://httpbin.org/status/404'); $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 testServerError() public function testNotFound()
{ {
$this->expectException(ResponseException::class); $this->expectException(\GuzzleHttp\Exception\RequestException::class);
$this->client->get('https://httpbin.org/status/500'); $this->client->get('https://httpbin.org/status/404');
} }
} }

View File

@@ -1,81 +0,0 @@
<?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());
}
}

View File

@@ -1,21 +0,0 @@
<?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);
}
}

View File

@@ -1,22 +0,0 @@
<?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']);
}
}

View File

@@ -16,12 +16,12 @@ class ConfigurationsUARulesTest extends TestCase
$array = $configuration->getArray(); $array = $configuration->getArray();
$this->assertCount(1, $array); $this->assertCount(1, $array);
$this->assertArrayHasKey('target', $array[0]); $this->assertObjectHasAttribute('target', $array[0]);
$this->assertEquals('ua', $array[0]['target']); $this->assertEquals('ua', $array[0]->target);
$this->assertArrayHasKey('value', $array[0]); $this->assertObjectHasAttribute('value', $array[0]);
$this->assertEquals( $this->assertEquals(
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4',
$array[0]['value'] $array[0]->value
); );
} }
} }

View File

@@ -16,19 +16,19 @@ class ConfigurationsZoneLockdownTest extends TestCase
$array = $configuration->getArray(); $array = $configuration->getArray();
$this->assertCount(1, $array); $this->assertCount(1, $array);
$this->assertArrayHasKey('target', $array[0]); $this->assertObjectHasAttribute('target', $array[0]);
$this->assertEquals('ip', $array[0]['target']); $this->assertEquals('ip', $array[0]->target);
$this->assertArrayHasKey('value', $array[0]); $this->assertObjectHasAttribute('value', $array[0]);
$this->assertEquals('1.2.3.4', $array[0]['value']); $this->assertEquals('1.2.3.4', $array[0]->value);
$configuration->addIPRange('1.2.3.4/24'); $configuration->addIPRange('1.2.3.4/24');
$array = $configuration->getArray(); $array = $configuration->getArray();
$this->assertCount(2, $array); $this->assertCount(2, $array);
$this->assertArrayHasKey('target', $array[1]); $this->assertObjectHasAttribute('target', $array[1]);
$this->assertEquals('ip_range', $array[1]['target']); $this->assertEquals('ip_range', $array[1]->target);
$this->assertArrayHasKey('value', $array[1]); $this->assertObjectHasAttribute('value', $array[1]);
$this->assertEquals('1.2.3.4/24', $array[1]['value']); $this->assertEquals('1.2.3.4/24', $array[1]->value);
} }
} }

View File

@@ -1,56 +0,0 @@
<?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
],
];
}
}

View File

@@ -1,21 +0,0 @@
<?php
use Cloudflare\API\Configurations\PageRulesActions;
class PageRulesActionTest extends TestCase
{
public function testForwardingURLConfigurationIsApplied()
{
$identifier = 'forwarding_url';
$statusCode = 301;
$forwardingURL = 'https://www.example.org/';
$actions = new PageRulesActions();
$actions->setForwardingURL($statusCode, $forwardingURL);
$configuration = $actions->getArray();
$this->assertCount(1, $configuration);
$this->assertEquals($identifier, $configuration[0]['id']);
$this->assertEquals($statusCode, $configuration[0]['value']['status_code']);
$this->assertEquals($forwardingURL, $configuration[0]['value']['url']);
}
}

View File

@@ -16,7 +16,7 @@ class PageRulesTargetTest extends TestCase
$array = $targets->getArray(); $array = $targets->getArray();
$this->assertCount(1, $array); $this->assertCount(1, $array);
$this->assertEquals('junade.com/*', $array[0]['constraint']['value']); $this->assertEquals('junade.com/*', $array[0]->constraint->value);
$this->assertEquals('matches', $array[0]['constraint']['operator']); $this->assertEquals('matches', $array[0]->constraint->operator);
} }
} }

View File

@@ -1,53 +0,0 @@
<?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
]
];
}
}

View File

@@ -17,7 +17,8 @@ class AccessRulesTest extends TestCase
'page' => 1, 'page' => 1,
'per_page' => 50, 'per_page' => 50,
'match' => 'all' 'match' => 'all'
]) ]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\AccessRules($mock); $zones = new \Cloudflare\API\Endpoints\AccessRules($mock);
@@ -28,7 +29,6 @@ class AccessRulesTest extends TestCase
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id); $this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $zones->getBody()->result[0]->id);
} }
public function testCreateRule() public function testCreateRule()
@@ -45,9 +45,10 @@ class AccessRulesTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'mode' => 'challenge', 'mode' => 'challenge',
'configuration' => $config->getArray(), 'configuration' => (object) $config->getArray(),
'notes' => 'This rule is on because of an event that occured on date X', 'notes' => 'This rule is on because of an event that occured on date X',
]) ])
); );
@@ -59,7 +60,6 @@ class AccessRulesTest extends TestCase
$config, $config,
'This rule is on because of an event that occured on date X' 'This rule is on because of an event that occured on date X'
); );
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
} }
public function testUpdateRule() public function testUpdateRule()
@@ -73,6 +73,7 @@ class AccessRulesTest extends TestCase
->method('patch') ->method('patch')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'mode' => 'challenge', 'mode' => 'challenge',
'notes' => 'This rule is on because of an event that occured on date X', 'notes' => 'This rule is on because of an event that occured on date X',
@@ -86,7 +87,6 @@ class AccessRulesTest extends TestCase
'challenge', 'challenge',
'This rule is on because of an event that occured on date X' 'This rule is on because of an event that occured on date X'
); );
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
} }
public function testDeleteRule() public function testDeleteRule()
@@ -100,6 +100,7 @@ class AccessRulesTest extends TestCase
->method('delete') ->method('delete')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'cascade' => 'none' 'cascade' => 'none'
]) ])
@@ -107,6 +108,5 @@ class AccessRulesTest extends TestCase
$rules = new \Cloudflare\API\Endpoints\AccessRules($mock); $rules = new \Cloudflare\API\Endpoints\AccessRules($mock);
$rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '92f17202ed8bd63d69a66b86a49a8f6b'); $rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '92f17202ed8bd63d69a66b86a49a8f6b');
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
} }
} }

View File

@@ -1,59 +0,0 @@
<?php
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Endpoints\AccountMembers;
class AccountMembersTest extends TestCase
{
public function testAddAccountMember()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createAccountMember.json');
$mock = $this->getMockBuilder(Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/members'),
$this->equalTo([
'email' => 'user@example.com',
'roles' => [
'3536bcfad5faccb999b47003c79917fb',
],
])
);
$accountMembers = new AccountMembers($mock);
$accountMembers->addAccountMember('01a7362d577a6c3019a474fd6f485823', 'user@example.com', ['3536bcfad5faccb999b47003c79917fb']);
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $accountMembers->getBody()->result->id);
}
public function testListAccountMembers()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listAccountMembers.json');
$mock = $this->getMockBuilder(Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('accounts/023e105f4ecef8ad9ca31a8372d0c353/members'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
])
);
$accountMembers = new AccountMembers($mock);
$result = $accountMembers->listAccountMembers('023e105f4ecef8ad9ca31a8372d0c353', 1, 20);
$this->assertObjectHasAttribute('result', $result);
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->count);
$this->assertEquals('4536bcfad5faccb111b47003c79917fa', $accountMembers->getBody()->result[0]->id);
}
}

View File

@@ -1,32 +0,0 @@
<?php
namespace Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Endpoints\AccountRoles;
use TestCase;
class AccountRolesTest extends TestCase
{
public function testListAccountRoles()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listAccountRoles.json');
$adapter = $this->getMockBuilder(Adapter::class)->getMock();
$adapter->method('get')->willReturn($response);
$adapter->expects($this->once())
->method('get')
->with($this->equalTo('accounts/023e105f4ecef8ad9ca31a8372d0c353/roles'));
$roles = new AccountRoles($adapter);
$result = $roles->listAccountRoles('023e105f4ecef8ad9ca31a8372d0c353');
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('3536bcfad5faccb999b47003c79917fb', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('3536bcfad5faccb999b47003c79917fb', $roles->getBody()->result[0]->id);
}
}

View File

@@ -1,86 +0,0 @@
<?php
use Cloudflare\API\Endpoints\Accounts;
/**
* 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 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);
}
public function testAddAccountWithDefaultType()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createStandardAccount.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('accounts'),
$this->equalTo([
'name' => 'Foo Bar',
'type' => 'standard',
])
);
$accounts = new Accounts($mock);
$accounts->addAccount('Foo Bar');
$this->assertEquals('2bab6ace8c72ed3f09b9eca6db1396bb', $accounts->getBody()->result->id);
}
public function testAddAccountWithCustomType()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createEnterpriseAccount.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('accounts'),
$this->equalTo([
'name' => 'Foo Bar',
'type' => 'enterprise',
])
);
$accounts = new Accounts($mock);
$accounts->addAccount('Foo Bar', 'enterprise');
$this->assertEquals('2bab6ace8c72ed3f09b9eca6db1396bb', $accounts->getBody()->result->id);
}
}

View File

@@ -1,120 +0,0 @@
<?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);
}
}

View File

@@ -1,82 +0,0 @@
<?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);
}
}

View File

@@ -1,282 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 18/03/2018
* Time: 22:23
*/
use Cloudflare\API\Endpoints\CustomHostnames;
class CustomHostnamesTest extends TestCase
{
public function testAddHostname()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createCustomHostname.json');
$customSsl = $this->getCustomSsl();
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames'),
$this->equalTo([
'hostname' => 'app.example.com',
'custom_origin_server' => 'origin.example.com',
'ssl' => [
'method' => 'http',
'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);
$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);
}
public function testListHostnames()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listHostnames.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames'),
$this->equalTo([
'hostname' => 'app.example.com',
'id' => '0d89c70d-ad9f-4843-b99f-6cc0252067e9',
'page' => 1,
'per_page' => 20,
'order' => 'ssl',
'direction' => 'desc',
'ssl' => 0
])
);
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
$result = $zones->listHostnames('023e105f4ecef8ad9ca31a8372d0c353', 'app.example.com', '0d89c70d-ad9f-4843-b99f-6cc0252067e9', 1, 20, 'ssl', 'desc', 0);
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->result[0]->id);
}
public function testGetHostname()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getHostname.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9')
);
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
$result = $zones->getHostname('023e105f4ecef8ad9ca31a8372d0c353', '0d89c70d-ad9f-4843-b99f-6cc0252067e9', '0d89c70d-ad9f-4843-b99f-6cc0252067e9');
$this->assertObjectHasAttribute('id', $result);
$this->assertObjectHasAttribute('hostname', $result);
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->result->id);
}
public function testUpdateHostname()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateHostname.json');
$customSsl = $this->getCustomSsl();
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9'),
$this->equalTo([
'custom_origin_server' => 'origin.example.com',
'ssl' => [
'method' => 'http',
'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);
$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('hostname', $result);
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->result->id);
}
public function testDeleteHostname()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteHostname.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response);
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/custom_hostnames/0d89c70d-ad9f-4843-b99f-6cc0252067e9')
);
$zones = new \Cloudflare\API\Endpoints\CustomHostnames($mock);
$result = $zones->deleteHostname('023e105f4ecef8ad9ca31a8372d0c353', '0d89c70d-ad9f-4843-b99f-6cc0252067e9');
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $result->id);
$this->assertEquals('0d89c70d-ad9f-4843-b99f-6cc0252067e9', $zones->getBody()->id);
}
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,
];
}
}

View File

@@ -1,91 +0,0 @@
<?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);
}
}

View File

@@ -19,6 +19,7 @@ class DNSTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'type' => 'A', 'type' => 'A',
'name' => 'example.com', 'name' => 'example.com',
@@ -32,57 +33,6 @@ 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');
@@ -94,16 +44,16 @@ class DNSTest extends TestCase
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
'match' => 'all', 'match' => 'all',
'type' => 'A', 'type' => 'A',
'name' => 'example.com', 'name' => 'example.com',
'content' => '127.0.0.1', 'content' => '127.0.0.1',
'order' => 'type', 'order' => 'type',
'direction' => 'desc', 'direction' => 'desc']),
]) $this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\DNS($mock); $zones = new \Cloudflare\API\Endpoints\DNS($mock);
@@ -114,7 +64,6 @@ class DNSTest extends TestCase
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
} }
public function testGetDNSRecordDetails() public function testGetDNSRecordDetails()
@@ -127,33 +76,14 @@ class DNSTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([])
); );
$dns = new \Cloudflare\API\Endpoints\DNS($mock); $dns = new \Cloudflare\API\Endpoints\DNS($mock);
$result = $dns->getRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $result = $dns->getRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
}
public function 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()
@@ -175,6 +105,7 @@ class DNSTest extends TestCase
->method('put') ->method('put')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo($details) $this->equalTo($details)
); );
@@ -182,7 +113,6 @@ class DNSTest extends TestCase
$result = $dns->updateRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59', $details); $result = $dns->updateRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59', $details);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
foreach ($details as $property => $value) { foreach ($details as $property => $value) {
$this->assertEquals($result->result->{ $property }, $value); $this->assertEquals($result->result->{ $property }, $value);

View File

@@ -1,121 +0,0 @@
<?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);
}
}

View File

@@ -1,177 +0,0 @@
<?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);
}
}

View File

@@ -18,14 +18,13 @@ class IPsTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('ips') $this->equalTo('ips'),
$this->equalTo([])
); );
$ipsMock = new \Cloudflare\API\Endpoints\IPs($mock); $ips = new \Cloudflare\API\Endpoints\IPs($mock);
$ips = $ipsMock->listIPs(); $ips = $ips->listIPs();
$this->assertObjectHasAttribute('ipv4_cidrs', $ips); $this->assertObjectHasAttribute('ipv4_cidrs', $ips);
$this->assertObjectHasAttribute('ipv6_cidrs', $ips); $this->assertObjectHasAttribute('ipv6_cidrs', $ips);
$this->assertObjectHasAttribute('ipv4_cidrs', $ipsMock->getBody()->result);
$this->assertObjectHasAttribute('ipv6_cidrs', $ipsMock->getBody()->result);
} }
} }

View File

@@ -1,128 +0,0 @@
<?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);
}
}

View File

@@ -1,93 +0,0 @@
<?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);
}
}

View File

@@ -23,6 +23,7 @@ class PageRulesTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'targets' => $target->getArray(), 'targets' => $target->getArray(),
'actions' => $action->getArray(), 'actions' => $action->getArray(),
@@ -35,7 +36,6 @@ class PageRulesTest extends TestCase
$result = $pageRules->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1); $result = $pageRules->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
$this->assertTrue($result); $this->assertTrue($result);
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
} }
public function testListPageRules() public function testListPageRules()
@@ -49,17 +49,17 @@ 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',
'match' => 'all' 'match' => 'all'
]) ]),
$this->equalTo([])
); );
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$pageRules->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all'); $pageRules->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all');
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result[0]->id);
} }
public function testGetPageRuleDetails() public function testGetPageRuleDetails()
@@ -72,12 +72,12 @@ class PageRulesTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo([])
); );
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$pageRules->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac'); $pageRules->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
} }
public function testUpdatePageRule() public function testUpdatePageRule()
@@ -94,7 +94,8 @@ class PageRulesTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('patch') ->method('patch')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'targets' => $target->getArray(), 'targets' => $target->getArray(),
'actions' => $action->getArray(), 'actions' => $action->getArray(),
@@ -104,10 +105,9 @@ class PageRulesTest extends TestCase
); );
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$result = $pageRules->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac', $target, $action, true, 1); $result = $pageRules->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
$this->assertTrue($result); $this->assertTrue($result);
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
} }
public function testDeletePageRule() public function testDeletePageRule()
@@ -120,13 +120,14 @@ class PageRulesTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo([]),
$this->equalTo([])
); );
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$result = $pageRules->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac'); $result = $pageRules->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
$this->assertTrue($result); $this->assertTrue($result);
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
} }
} }

View File

@@ -1,133 +0,0 @@
<?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);
}
}

View File

@@ -23,6 +23,7 @@ class RailgunTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('railguns'), $this->equalTo('railguns'),
$this->equalTo([]),
$this->equalTo(['name' => $details['name']]) $this->equalTo(['name' => $details['name']])
); );
@@ -34,7 +35,6 @@ class RailgunTest extends TestCase
foreach ($details as $property => $value) { foreach ($details as $property => $value) {
$this->assertEquals($result->result->{ $property }, $value); $this->assertEquals($result->result->{ $property }, $value);
} }
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result->id);
} }
public function testlist() public function testlist()
@@ -52,7 +52,8 @@ class RailgunTest extends TestCase
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
'direction' => 'desc' 'direction' => 'desc'
]) ]),
$this->equalTo([])
); );
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock); $railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
@@ -60,7 +61,6 @@ class RailgunTest extends TestCase
$this->assertObjectHasAttribute('result', $result); $this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result); $this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result[0]->id);
} }
public function testget() public function testget()
@@ -73,14 +73,14 @@ class RailgunTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448') $this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([])
); );
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock); $railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $railgun->get('e928d310693a83094309acf9ead50448'); $result = $railgun->get('e928d310693a83094309acf9ead50448');
$this->assertEquals('e928d310693a83094309acf9ead50448', $result->id); $this->assertEquals('e928d310693a83094309acf9ead50448', $result->id);
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result->id);
} }
public function testgetZones() public function testgetZones()
@@ -93,7 +93,9 @@ class RailgunTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448/zones') $this->equalTo('railguns/e928d310693a83094309acf9ead50448/zones'),
$this->equalTo([]),
$this->equalTo([])
); );
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock); $railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
@@ -101,7 +103,6 @@ class RailgunTest extends TestCase
$this->assertObjectHasAttribute('result', $result); $this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result); $this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $railgun->getBody()->result[0]->id);
} }
public function testupdate() public function testupdate()
@@ -119,6 +120,7 @@ class RailgunTest extends TestCase
->method('patch') ->method('patch')
->with( ->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'), $this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([]),
$this->equalTo($details) $this->equalTo($details)
); );
@@ -126,7 +128,6 @@ class RailgunTest extends TestCase
$result = $waf->update('e928d310693a83094309acf9ead50448', true); $result = $waf->update('e928d310693a83094309acf9ead50448', true);
$this->assertEquals('e928d310693a83094309acf9ead50448', $result->id); $this->assertEquals('e928d310693a83094309acf9ead50448', $result->id);
$this->assertEquals('e928d310693a83094309acf9ead50448', $waf->getBody()->result->id);
} }
public function testdelete() public function testdelete()
@@ -139,11 +140,12 @@ class RailgunTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with( ->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448') $this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([]),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\Railgun($mock); $waf = new \Cloudflare\API\Endpoints\Railgun($mock);
$waf->delete('e928d310693a83094309acf9ead50448'); $waf->delete('e928d310693a83094309acf9ead50448');
$this->assertEquals('e928d310693a83094309acf9ead50448', $waf->getBody()->result->id);
} }
} }

View File

@@ -1,191 +0,0 @@
<?php
namespace Endpoints;
use TestCase;
class RulesListsTest extends TestCase
{
public function testCreateRulesList()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createRulesList.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/rules/lists'),
$this->equalTo([
'kind' => 'ip',
'name' => 'ip-allowlist',
])
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->createList('01a7362d577a6c3019a474fd6f485823', 'ip', 'ip-allowlist');
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $result->id);
$this->assertEquals('ip', $result->kind);
$this->assertEquals('ip-allowlist', $result->name);
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $rulesLists->getBody()->result->id);
}
public function testDeleteRulesList()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteRulesList.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response);
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/rules/lists/2c0fc9fa937b11eaa1b71c4d701ab86e')
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->deleteList('01a7362d577a6c3019a474fd6f485823', '2c0fc9fa937b11eaa1b71c4d701ab86e');
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $result->id);
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $rulesLists->getBody()->result->id);
}
public function testGetRulesLists()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRulesLists.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/01a7362d577a6c3019a474fd6f485823/rules/lists')
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->getLists('01a7362d577a6c3019a474fd6f485823');
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $result[0]->id);
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $rulesLists->getBody()->result[0]->id);
}
public function testGetRulesListDetails()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getRulesListDetails.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/01a7362d577a6c3019a474fd6f485823/rules/lists/2c0fc9fa937b11eaa1b71c4d701ab86e')
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->getListDetails('01a7362d577a6c3019a474fd6f485823', '2c0fc9fa937b11eaa1b71c4d701ab86e');
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $result->id);
$this->assertEquals('ip', $result->kind);
$this->assertEquals('2c0fc9fa937b11eaa1b71c4d701ab86e', $rulesLists->getBody()->result->id);
}
public function testGetRulesListItems()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getRulesListItems.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/01a7362d577a6c3019a474fd6f485823/rules/lists/2c0fc9fa937b11eaa1b71c4d701ab86e/items'),
$this->equalTo([
'per_page' => 20,
])
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->getListItems('01a7362d577a6c3019a474fd6f485823', '2c0fc9fa937b11eaa1b71c4d701ab86e');
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('10.0.0.1', $result->result[0]);
$this->assertEquals('10.0.0.1', $rulesLists->getBody()->result[0]);
}
public function testCreateRulesListItem() {
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createRulesListItem.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/rules/lists/2c0fc9fa937b11eaa1b71c4d701ab86e/items')
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->createListItem('01a7362d577a6c3019a474fd6f485823', '2c0fc9fa937b11eaa1b71c4d701ab86e', [
'10.0.0.1'
]);
$this->assertEquals('4da8780eeb215e6cb7f48dd981c4ea02', $result->operation_id);
$this->assertEquals('4da8780eeb215e6cb7f48dd981c4ea02', $rulesLists->getBody()->result->operation_id);
}
public function testDeleteRulesListItem() {
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteRulesListItem.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response);
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('accounts/01a7362d577a6c3019a474fd6f485823/rules/lists/2c0fc9fa937b11eaa1b71c4d701ab86e/items')
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->deleteListItem('01a7362d577a6c3019a474fd6f485823', '2c0fc9fa937b11eaa1b71c4d701ab86e', ['6as9450mma215q6so7p79dd981r4ee09']);
$this->assertEquals('4da8780eeb215e6cb7f48dd981c4ea02', $result->operation_id);
$this->assertEquals('4da8780eeb215e6cb7f48dd981c4ea02', $rulesLists->getBody()->result->operation_id);
}
public function testGetOperationStatus() {
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getOperationStatus.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/01a7362d577a6c3019a474fd6f485823/rules/lists/bulk_operations/4da8780eeb215e6cb7f48dd981c4ea02')
);
$rulesLists = new \Cloudflare\API\Endpoints\RulesLists($mock);
$result = $rulesLists->getOperationStatus('01a7362d577a6c3019a474fd6f485823', '4da8780eeb215e6cb7f48dd981c4ea02');
$this->assertEquals('4da8780eeb215e6cb7f48dd981c4ea02', $result->id);
$this->assertEquals('4da8780eeb215e6cb7f48dd981c4ea02', $rulesLists->getBody()->result->id);
}
}

View File

@@ -1,161 +0,0 @@
<?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);
}
}

View File

@@ -1,110 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: Jurgen Coetsiers
* Date: 21/10/2018
* Time: 09:09
*/
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()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/enableTLS13.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/tls_1_3'),
$this->equalTo(['value' => 'on'])
);
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
$result = $tlsMock->enableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
$this->assertTrue($result);
}
public function testDisableTLS13()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/disableTLS13.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/tls_1_3'),
$this->equalTo(['value' => 'off'])
);
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
$result = $tlsMock->disableTLS13('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
$this->assertTrue($result);
}
public function testChangeMinimimTLSVersion()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/changeMinimumTLSVersion.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/min_tls_version'),
$this->equalTo(['value' => '1.1'])
);
$tlsMock = new \Cloudflare\API\Endpoints\TLS($mock);
$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);
}
}

View File

@@ -19,10 +19,11 @@ 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
]) ]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\UARules($mock); $zones = new \Cloudflare\API\Endpoints\UARules($mock);
@@ -33,7 +34,6 @@ class UARulesTest extends TestCase
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
} }
public function testCreateRule() public function testCreateRule()
@@ -50,6 +50,7 @@ class UARulesTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'mode' => 'js_challenge', 'mode' => 'js_challenge',
'id' => '372e67954025e0ba6aaa6d586b9e0b59', 'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -66,7 +67,6 @@ class UARulesTest extends TestCase
'372e67954025e0ba6aaa6d586b9e0b59', '372e67954025e0ba6aaa6d586b9e0b59',
'Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack' 'Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack'
); );
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
} }
public function getRuleDetails() public function getRuleDetails()
@@ -79,14 +79,14 @@ class UARulesTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([])
); );
$lockdown = new \Cloudflare\API\Endpoints\UARules($mock); $lockdown = new \Cloudflare\API\Endpoints\UARules($mock);
$result = $lockdown->getRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $result = $lockdown->getRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $lockdown->getBody()->result->id);
} }
public function testUpdateRule() public function testUpdateRule()
@@ -103,6 +103,7 @@ class UARulesTest extends TestCase
->method('put') ->method('put')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'mode' => 'js_challenge', 'mode' => 'js_challenge',
'id' => '372e67954025e0ba6aaa6d586b9e0b59', 'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -119,7 +120,6 @@ class UARulesTest extends TestCase
$config, $config,
'Restrict access to these endpoints to requests from a known IP address' 'Restrict access to these endpoints to requests from a known IP address'
); );
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
} }
public function testDeleteRule() public function testDeleteRule()
@@ -132,11 +132,12 @@ class UARulesTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo([])
); );
$rules = new \Cloudflare\API\Endpoints\UARules($mock); $rules = new \Cloudflare\API\Endpoints\UARules($mock);
$rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
} }
} }

View File

@@ -21,7 +21,6 @@ class UserTest extends TestCase
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $details->id); $this->assertEquals('7c5dae5552338874e5053f2534d2767a', $details->id);
$this->assertObjectHasAttribute('email', $details); $this->assertObjectHasAttribute('email', $details);
$this->assertEquals('user@example.com', $details->email); $this->assertEquals('user@example.com', $details->email);
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
} }
public function testGetUserID() public function testGetUserID()
@@ -33,7 +32,6 @@ class UserTest extends TestCase
$user = new \Cloudflare\API\Endpoints\User($mock); $user = new \Cloudflare\API\Endpoints\User($mock);
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getUserID()); $this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getUserID());
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
} }
public function testGetUserEmail() public function testGetUserEmail()
@@ -47,7 +45,6 @@ class UserTest extends TestCase
$user = new \Cloudflare\API\Endpoints\User($mock); $user = new \Cloudflare\API\Endpoints\User($mock);
$this->assertEquals('user@example.com', $user->getUserEmail()); $this->assertEquals('user@example.com', $user->getUserEmail());
$this->assertEquals('user@example.com', $user->getBody()->result->email);
} }
public function testUpdateUserDetails() public function testUpdateUserDetails()
@@ -59,10 +56,9 @@ class UserTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('patch') ->method('patch')
->with($this->equalTo('user'), $this->equalTo(['email' => 'user2@example.com'])); ->with($this->equalTo('user'), $this->equalTo([]), $this->equalTo(['email' => 'user2@example.com']));
$user = new \Cloudflare\API\Endpoints\User($mock); $user = new \Cloudflare\API\Endpoints\User($mock);
$user->updateUserDetails(['email' => 'user2@example.com']); $user->updateUserDetails(['email' => 'user2@example.com']);
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
} }
} }

View File

@@ -25,7 +25,8 @@ class WAFTest extends TestCase
'match' => 'all', 'match' => 'all',
'order' => 'status', 'order' => 'status',
'direction' => 'desc' 'direction' => 'desc'
]) ]),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\WAF($mock); $waf = new \Cloudflare\API\Endpoints\WAF($mock);
@@ -36,7 +37,6 @@ class WAFTest extends TestCase
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->result[0]->id); $this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $waf->getBody()->result[0]->id);
} }
public function testgetPackageInfo() public function testgetPackageInfo()
@@ -49,14 +49,14 @@ class WAFTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b'),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\WAF($mock); $waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getPackageInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b'); $result = $waf->getPackageInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b');
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->id); $this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->id);
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $waf->getBody()->result->id);
} }
public function testgetRules() public function testgetRules()
@@ -76,7 +76,8 @@ class WAFTest extends TestCase
'match' => 'all', 'match' => 'all',
'order' => 'status', 'order' => 'status',
'direction' => 'desc' 'direction' => 'desc'
]) ]),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\WAF($mock); $waf = new \Cloudflare\API\Endpoints\WAF($mock);
@@ -87,7 +88,6 @@ class WAFTest extends TestCase
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id); $this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $waf->getBody()->result[0]->id);
} }
public function testgetRuleInfo() public function testgetRuleInfo()
@@ -100,14 +100,14 @@ class WAFTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\WAF($mock); $waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getRuleInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'f939de3be84e66e757adcdcb87908023'); $result = $waf->getRuleInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'f939de3be84e66e757adcdcb87908023');
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $result->id); $this->assertEquals('f939de3be84e66e757adcdcb87908023', $result->id);
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $waf->getBody()->result->id);
} }
public function testupdateRule() public function testupdateRule()
@@ -125,6 +125,7 @@ class WAFTest extends TestCase
->method('patch') ->method('patch')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'),
$this->equalTo([]),
$this->equalTo($details) $this->equalTo($details)
); );
@@ -136,7 +137,6 @@ class WAFTest extends TestCase
foreach ($details as $property => $value) { foreach ($details as $property => $value) {
$this->assertEquals($result->{ $property }, $value); $this->assertEquals($result->{ $property }, $value);
} }
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $waf->getBody()->result->id);
} }
public function getGroups() public function getGroups()
@@ -156,7 +156,8 @@ class WAFTest extends TestCase
'match' => 'all', 'match' => 'all',
'order' => 'status', 'order' => 'status',
'direction' => 'desc' 'direction' => 'desc'
]) ]),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\WAF($mock); $waf = new \Cloudflare\API\Endpoints\WAF($mock);
@@ -167,7 +168,6 @@ class WAFTest extends TestCase
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->result[0]->id); $this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result[0]->id);
} }
public function testgetGroupInfo() public function testgetGroupInfo()
@@ -180,14 +180,14 @@ class WAFTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'),
$this->equalTo([])
); );
$waf = new \Cloudflare\API\Endpoints\WAF($mock); $waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getGroupInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'de677e5818985db1285d0e80225f06e5'); $result = $waf->getGroupInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'de677e5818985db1285d0e80225f06e5');
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->id); $this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->id);
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result->id);
} }
public function testupdateGroup() public function testupdateGroup()
@@ -205,6 +205,7 @@ class WAFTest extends TestCase
->method('patch') ->method('patch')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'),
$this->equalTo([]),
$this->equalTo($details) $this->equalTo($details)
); );
@@ -216,6 +217,5 @@ class WAFTest extends TestCase
foreach ($details as $property => $value) { foreach ($details as $property => $value) {
$this->assertEquals($result->{ $property }, $value); $this->assertEquals($result->{ $property }, $value);
} }
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result->id);
} }
} }

View File

@@ -1,78 +0,0 @@
<?php
class ZoneCacheTest extends TestCase
{
public function testCachePurgeEverything()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.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/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
$this->equalTo(['purge_everything' => true])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->cachePurgeEverything('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
$this->assertTrue($result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
}
public function testCachePurgeHost()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeHost.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
$this->equalTo(
[
'files' => [],
'tags' => [],
'hosts' => ['dash.cloudflare.com']
]
)
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->cachePurge('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', [], [], ['dash.cloudflare.com']);
$this->assertTrue($result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
}
public function testCachePurge()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurge.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
$this->equalTo(['files' => [
'https://example.com/file.jpg',
]
])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->cachePurge('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', [
'https://example.com/file.jpg',
]);
$this->assertTrue($result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
}
}

View File

@@ -1,19 +0,0 @@
<?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);
}
}

View File

@@ -19,10 +19,11 @@ class ZoneLockdownTest extends TestCase
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
]) ]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\ZoneLockdown($mock); $zones = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
@@ -33,7 +34,6 @@ class ZoneLockdownTest extends TestCase
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
} }
public function testAddLockdown() public function testAddLockdown()
@@ -50,6 +50,7 @@ class ZoneLockdownTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'urls' => ['api.mysite.com/some/endpoint*'], 'urls' => ['api.mysite.com/some/endpoint*'],
'id' => '372e67954025e0ba6aaa6d586b9e0b59', 'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -66,7 +67,6 @@ class ZoneLockdownTest extends TestCase
'372e67954025e0ba6aaa6d586b9e0b59', '372e67954025e0ba6aaa6d586b9e0b59',
'Restrict access to these endpoints to requests from a known IP address' 'Restrict access to these endpoints to requests from a known IP address'
); );
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
} }
public function testGetRecordDetails() public function testGetRecordDetails()
@@ -79,14 +79,14 @@ class ZoneLockdownTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([])
); );
$lockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock); $lockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
$result = $lockdown->getLockdownDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $result = $lockdown->getLockdownDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id); $this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $lockdown->getBody()->result->id);
} }
public function testUpdateLockdown() public function testUpdateLockdown()
@@ -103,6 +103,7 @@ class ZoneLockdownTest extends TestCase
->method('put') ->method('put')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'), $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'urls' => ['api.mysite.com/some/endpoint*'], 'urls' => ['api.mysite.com/some/endpoint*'],
'id' => '372e67954025e0ba6aaa6d586b9e0b59', 'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -119,7 +120,6 @@ class ZoneLockdownTest extends TestCase
$config, $config,
'Restrict access to these endpoints to requests from a known IP address' 'Restrict access to these endpoints to requests from a known IP address'
); );
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
} }
public function testDeleteLockdown() public function testDeleteLockdown()
@@ -135,11 +135,12 @@ class ZoneLockdownTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with( ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59') $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo([])
); );
$zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock); $zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
$zoneLockdown->deleteLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $zoneLockdown->deleteLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
} }
} }

View File

@@ -1,69 +0,0 @@
<?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);
}
}

View File

@@ -1,81 +0,0 @@
<?php
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Endpoints\ZoneSubscriptions;
class ZoneSubscriptionsTest extends TestCase
{
public function testListZoneSubscriptions()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listZoneSubscriptions.json');
$mock = $this->getMockBuilder(Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/subscriptions')
);
$zoneSubscriptions = new ZoneSubscriptions($mock);
$zoneSubscriptions->listZoneSubscriptions('023e105f4ecef8ad9ca31a8372d0c353');
$this->assertEquals('506e3185e9c882d175a2d0cb0093d9f2', $zoneSubscriptions->getBody()->result[0]->id);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zoneSubscriptions->getBody()->result[0]->zone->id);
}
public function testAddZoneSubscriptionIfMissing()
{
$postResponse = $this->getPsr7JsonResponseForFixture('Endpoints/createZoneSubscription.json');
$getResponse = $this->getPsr7JsonResponseForFixture('Endpoints/listEmptyZoneSubscriptions.json');
$mock = $this->getMockBuilder(Adapter::class)->getMock();
$mock->method('post')->willReturn($postResponse);
$mock->method('get')->willReturn($getResponse);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/subscription'),
$this->equalTo([
'rate_plan' => [
'id' => 'PARTNER_PRO',
],
])
);
$zoneSubscriptions = new ZoneSubscriptions($mock);
$zoneSubscriptions->addZoneSubscription('023e105f4ecef8ad9ca31a8372d0c353', 'PARTNER_PRO');
$this->assertEquals('506e3185e9c882d175a2d0cb0093d9f2', $zoneSubscriptions->getBody()->result->id);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zoneSubscriptions->getBody()->result->zone->id);
}
public function testAddZoneSubscriptionIfExisting()
{
$postResponse = $this->getPsr7JsonResponseForFixture('Endpoints/createZoneSubscription.json');
$getResponse = $this->getPsr7JsonResponseForFixture('Endpoints/listZoneSubscriptions.json');
$mock = $this->getMockBuilder(Adapter::class)->getMock();
$mock->method('put')->willReturn($postResponse);
$mock->method('get')->willReturn($getResponse);
$mock->expects($this->once())
->method('put')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/subscription'),
$this->equalTo([
'rate_plan' => [
'id' => 'PARTNER_PRO',
],
])
);
$zoneSubscriptions = new ZoneSubscriptions($mock);
$zoneSubscriptions->addZoneSubscription('023e105f4ecef8ad9ca31a8372d0c353', 'PARTNER_PRO');
$this->assertEquals('506e3185e9c882d175a2d0cb0093d9f2', $zoneSubscriptions->getBody()->result->id);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zoneSubscriptions->getBody()->result->zone->id);
}
}

View File

@@ -19,6 +19,7 @@ class ZonesTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones'), $this->equalTo('zones'),
$this->equalTo([]),
$this->equalTo(['name' => 'example.com', 'jump_start' => false]) $this->equalTo(['name' => 'example.com', 'jump_start' => false])
); );
@@ -37,45 +38,16 @@ class ZonesTest extends TestCase
->method('post') ->method('post')
->with( ->with(
$this->equalTo('zones'), $this->equalTo('zones'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'name' => 'example.com', 'name' => 'example.com',
'jump_start' => true, 'jump_start' => true,
'account' => [ 'organization' => (object)['id' => '01a7362d577a6c3019a474fd6f485823']
'id' => '01a7362d577a6c3019a474fd6f485823',
],
]) ])
); );
$zones = new \Cloudflare\API\Endpoints\Zones($mock); $zones = new \Cloudflare\API\Endpoints\Zones($mock);
$zones->addZone('example.com', true, '01a7362d577a6c3019a474fd6f485823'); $zones->addZone('example.com', true, '01a7362d577a6c3019a474fd6f485823');
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $zones->getBody()->result->id);
}
public function testAddZoneWithAccountId()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/addZone.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'),
$this->equalTo([
'name' => 'example.com',
'jump_start' => false,
'account' => [
'id' => '023e105f4ecef8ad9ca31a8372d0c353',
],
])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->addZone('example.com', false, '023e105f4ecef8ad9ca31a8372d0c353');
$this->assertObjectHasAttribute('id', $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->account->id);
} }
public function testActivationTest() public function testActivationTest()
@@ -88,14 +60,15 @@ class ZonesTest extends TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('put') ->method('put')
->with( ->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check') $this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check'),
$this->equalTo([]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\Zones($mock); $zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->activationCheck('c2547eb745079dac9320b638f5e225cf483cc5cfdda41'); $result = $zones->activationCheck('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
$this->assertTrue($result); $this->assertTrue($result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
} }
public function testListZones() public function testListZones()
@@ -109,15 +82,16 @@ class ZonesTest extends TestCase
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones'), $this->equalTo('zones'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
'match' => 'all', 'match' => 'all',
'name' => 'example.com', 'name' => 'example.com',
'status' => 'active', 'status' => 'active',
'order' => 'status', 'order' => 'status',
'direction' => 'desc', 'direction' => 'desc'
]) ]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\Zones($mock); $zones = new \Cloudflare\API\Endpoints\Zones($mock);
@@ -128,26 +102,6 @@ class ZonesTest extends TestCase
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->result[0]->id); $this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
}
public function testGetZoneByID()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getZoneById.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353'));
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->getZoneById('023e105f4ecef8ad9ca31a8372d0c353');
$this->assertInstanceOf(\stdClass::class, $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
$this->assertEquals('example.com', $zones->getBody()->result->name);
} }
public function testGetZoneID() public function testGetZoneID()
@@ -161,19 +115,19 @@ class ZonesTest extends TestCase
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones'), $this->equalTo('zones'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
'match' => 'all', 'match' => 'all',
'name' => 'example.com', 'name' => 'example.com',
]) ]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\Zones($mock); $zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->getZoneID('example.com'); $result = $zones->getZoneID('example.com');
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result); $this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
} }
public function testGetAnalyticsDashboard() public function testGetAnalyticsDashboard()
@@ -187,7 +141,8 @@ class ZonesTest extends TestCase
->method('get') ->method('get')
->with( ->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/analytics/dashboard'), $this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/analytics/dashboard'),
$this->equalTo(['since' => '-10080', 'until' => '0', 'continuous' => var_export(true, true)]) $this->equalTo(['since' => '-10080', 'until' => '0', 'continuous' => var_export(true, true)]),
$this->equalTo([])
); );
$zones = new \Cloudflare\API\Endpoints\Zones($mock); $zones = new \Cloudflare\API\Endpoints\Zones($mock);
@@ -196,7 +151,7 @@ class ZonesTest extends TestCase
$this->assertObjectHasAttribute('since', $analytics->totals); $this->assertObjectHasAttribute('since', $analytics->totals);
$this->assertObjectHasAttribute('since', $analytics->timeseries[0]); $this->assertObjectHasAttribute('since', $analytics->timeseries[0]);
} }
public function testChangeDevelopmentMode() public function testChangeDevelopmentMode()
{ {
$response = $this->getPsr7JsonResponseForFixture('Endpoints/changeDevelopmentMode.json'); $response = $this->getPsr7JsonResponseForFixture('Endpoints/changeDevelopmentMode.json');
@@ -208,6 +163,7 @@ class ZonesTest extends TestCase
->method('patch') ->method('patch')
->with( ->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/development_mode'), $this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/development_mode'),
$this->equalTo([]),
$this->equalTo(['value' => 'on']) $this->equalTo(['value' => 'on'])
); );
@@ -215,6 +171,26 @@ class ZonesTest extends TestCase
$result = $zones->changeDevelopmentMode('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true); $result = $zones->changeDevelopmentMode('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
$this->assertTrue($result); $this->assertTrue($result);
$this->assertEquals('development_mode', $zones->getBody()->result->id); }
public function testCachePurgeEverything()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response);
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
$this->equalTo([]),
$this->equalTo(['purge_everything' => true])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->cachePurgeEverything('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
$this->assertTrue($result);
} }
} }

View File

@@ -23,10 +23,6 @@
"email": "user@example.com", "email": "user@example.com",
"owner_type": "user" "owner_type": "user"
}, },
"account": {
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "Demo Account"
},
"permissions": [ "permissions": [
"#zone:read", "#zone:read",
"#zone:edit" "#zone:edit"

View File

@@ -1,8 +0,0 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
}

View File

@@ -1,8 +0,0 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
}

View File

@@ -1,6 +0,0 @@
{
"success": true,
"errors": [],
"messages": [],
"result": "1.1"
}

View File

@@ -1,74 +0,0 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "4536bcfad5faccb111b47003c79917fa",
"code": "05dd05cce12bbed97c0d87cd78e89bc2fd41a6cee72f27f6fc84af2e45c0fac0",
"user": {
"id": "7c5dae5552338874e5053f2534d2767a",
"first_name": "John",
"last_name": "Appleseed",
"email": "user@example.com",
"two_factor_authentication_enabled": false
},
"status": "accepted",
"roles": [
{
"id": "3536bcfad5faccb999b47003c79917fb",
"name": "Account Administrator",
"description": "Administrative access to the entire Account",
"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
}
}
}
]
}
}

View File

@@ -1,17 +0,0 @@
{
"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"
}
}

View File

@@ -1,20 +0,0 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "0d89c70d-ad9f-4843-b99f-6cc0252067e9",
"hostname": "app.example.com",
"ssl": {
"status": "pending_validation",
"method": "http",
"type": "dv",
"cname_target": "dcv.digicert.com",
"cname": "810b7d5f01154524b961ba0cd578acc2.app.example.com"
}
}
}

View File

@@ -1,13 +0,0 @@
{
"result": {
"id": "2bab6ace8c72ed3f09b9eca6db1396bb",
"name": "Foo Bar",
"type": "enterprise",
"settings": {
"enforce_twofactor": false
}
},
"success": true,
"errors": [],
"messages": []
}

View File

@@ -1,20 +0,0 @@
{
"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": []
}

View File

@@ -1,33 +0,0 @@
{
"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": []
}

View File

@@ -1,46 +0,0 @@
{
"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
}
}

Some files were not shown because too many files have changed in this diff Show More