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

2
.gitignore vendored Executable file → Normal file
View File

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

73
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)
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
public function addRecord(
string $zoneID,
string $type,
string $name,
string $content,
int $ttl = 0,
bool $proxied = true,
string $priority = '',
array $data = []
): \stdClass {
$options = [
'type' => $type,
'name' => $name,
'content' => $content,
'proxied' => $proxied
];
$key = new Cloudflare\API\Auth\APIKey('user@example.com', 'apiKey');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$user = new Cloudflare\API\Endpoints\User($adapter);
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;
}
echo $user->getUserID();
```
## Contributions
We welcome community contribution to this repository. [CONTRIBUTING.md](CONTRIBUTING.md) will help you start contributing.
## Licensing
Licensed under the 3-clause BSD license. See the [LICENSE](LICENSE) file for details.

View File

@@ -1,15 +1,14 @@
{
"name": "yuemi/cloudflare-php",
"name": "cloudflare/sdk",
"description": "PHP binding for v4 of the Cloudflare Client API.",
"type": "library",
"require": {
"guzzlehttp/guzzle": "^7.0.1",
"php": ">=7.2.5",
"psr/http-message": "^1.0 || ^2.0",
"ext-json": "*"
"guzzlehttp/guzzle": "^6.2.2",
"php": ">=7.0.0",
"psr/http-message": "~1.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"phpunit/phpunit": "5.7.5",
"phpmd/phpmd" : "@stable",
"friendsofphp/php-cs-fixer": "^2.6"
},
@@ -29,10 +28,5 @@
"classmap": [
"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).
*
* @param string $uri
* @param array $data
* @param array $query
* @param array $headers
*
* @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 array $data
* @param array $headers
* @param array $body
*
* @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 array $data
* @param array $headers
* @param array $body
*
* @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 array $data
* @param array $headers
* @param array $body
*
* @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 array $data
* @param array $headers
* @param array $body
*
* @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
/**
* User: junade
* Date: 13/01/2017
* Time: 18:26
*/
namespace Cloudflare\API\Adapter;
use Cloudflare\API\Auth\Auth;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use Psr\Http\Message\ResponseInterface;
class Guzzle implements Adapter
@@ -33,89 +37,96 @@ class Guzzle implements Adapter
/**
* @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);
}
/**
* @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);
}
$response = $this->client->get($uri, ['query' => $query, 'headers' => $headers]);
$this->checkError($response);
return $response;
}
/**
* @SuppressWarnings(PHPMD.StaticAccess)
*/
public function requestMultiPart(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');
}
$multipart = [];
foreach( $data as $key => $value ) {
$multipart[] = [
'name' => $key,
'contents' => $value
];
}
try {
$response = $this->client->$method($uri, [
/**
* @inheritDoc
*/
public function post(string $uri, array $headers = [], array $body = []): ResponseInterface
{
$response = $this->client->post(
$uri,
[
'headers' => $headers,
'multipart' => $multipart
]);
} catch (RequestException $err) {
throw ResponseException::fromRequestException($err);
'json' => $body
]
);
$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;
use GuzzleHttp\Exception\RequestException;
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];
}
public function setASN(string $value)
{
$this->config = ['target' => 'asn', 'value' => $value];
}
public function getArray(): array
{
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)
{
$this->addConfigurationOption('browser_check', [
@@ -117,7 +110,7 @@ class PageRulesActions implements Configurations
public function setEdgeCacheTTL(int $value)
{
if ($value > 2678400) {
if ($value > 2419200) {
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.');
}
$this->addConfigurationOption("forwarding_url", [
'value' => [
'status_code' => $statusCode,
'url' => $forwardingUrl,
],
$this->addConfigurationOption('forwarding_url', [
'status_code' => $statusCode,
'url' => $forwardingUrl,
]);
}
public function setHostHeaderOverride(string $value)
public function setHostHeaderOverride(bool $active)
{
$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', [
'value' => $value
@@ -268,7 +259,7 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.');
}
$this->addConfigurationOption('ssl', [
$this->addConfigurationOption('smart_errors', [
'value' => $value
]);
}
@@ -310,7 +301,7 @@ class PageRulesActions implements Configurations
{
$configuration['id'] = $setting;
array_push($this->configs, $configuration);
$this->configs[] = (object) $configuration;
}
private function getBoolAsOnOrOff(bool $value): string

View File

@@ -15,9 +15,9 @@ class PageRulesTargets implements Configurations
public function __construct(string $queryUrl)
{
$this->targets = [
[
(object)[
'target' => 'url',
'constraint' => [
'constraint' => (object)[
'operator' => 'matches',
'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)
{
$this->configs[] = ['target' => 'ua', 'value' => $value];
$this->configs[] = (object)['target' => 'ua', 'value' => $value];
}
public function getArray(): array

View File

@@ -14,12 +14,12 @@ class ZoneLockdown implements Configurations
public function addIP(string $value)
{
$this->configs[] = ['target' => 'ip', 'value' => $value];
$this->configs[] = (object)['target' => 'ip', 'value' => $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

View File

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

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

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;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class IPs implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -24,9 +21,9 @@ class IPs implements API
public function listIPs(): \stdClass
{
$ips = $this->adapter->get('ips');
$this->body = json_decode($ips->getBody());
$ips = $this->adapter->get('ips', [], []);
$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\Configurations\PageRulesActions;
use Cloudflare\API\Configurations\PageRulesTargets;
use Cloudflare\API\Traits\BodyAccessorTrait;
class PageRules implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -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;
}
@@ -73,19 +70,19 @@ class PageRules implements API
string $direction = null,
string $match = null
): 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.');
}
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.');
}
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.');
}
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.');
}
@@ -96,53 +93,21 @@ class PageRules implements API
'match' => $match
];
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules', $query, []);
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function getPageRuleDetails(string $zoneID, string $ruleID): \stdClass
{
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules/' . $ruleID);
$this->body = json_decode($user->getBody());
return $this->body->result;
}
public function editPageRule(
string $zoneID,
string $ruleID,
PageRulesTargets $target,
PageRulesActions $actions,
bool $active = null,
int $priority = null
): bool {
$options = [];
$options['targets'] = $target->getArray();
$options['actions'] = $actions->getArray();
if ($active !== null) {
$options['status'] = $active == true ? 'active' : 'disabled';
}
if ($priority !== null) {
$options['priority'] = $priority;
}
$query = $this->adapter->put('zones/' . $zoneID . '/pagerules/' . $ruleID, $options);
$this->body = json_decode($query->getBody());
if (isset($this->body->result->id)) {
return true;
}
return false;
$user = $this->adapter->get('zones/' . $zoneID . '/pagerules/' . $ruleID, [], []);
$body = json_decode($user->getBody());
return $body->result;
}
public function updatePageRule(
string $zoneID,
string $ruleID,
PageRulesTargets $target = null,
PageRulesActions $actions = null,
bool $active = null,
@@ -166,11 +131,12 @@ class PageRules implements API
$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;
}
@@ -179,11 +145,11 @@ class PageRules implements API
public function deletePageRule(string $zoneID, string $ruleID): bool
{
$user = $this->adapter->delete('zones/' . $zoneID . '/pagerules/' . $ruleID);
$user = $this->adapter->delete('zones/' . $zoneID . '/pagerules/' . $ruleID, [], []);
$this->body = json_decode($user->getBody());
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
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;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class Railgun implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -29,10 +26,10 @@ class Railgun implements API
'name' => $name,
];
$user = $this->adapter->post('railguns', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->post('railguns', [], $query);
$body = json_decode($user->getBody());
return $this->body;
return $body;
}
public function list(
@@ -49,28 +46,28 @@ class Railgun implements API
$query['direction'] = $direction;
}
$user = $this->adapter->get('railguns', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('railguns', $query, []);
$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(
string $railgunID
): \stdClass {
$user = $this->adapter->get('railguns/' . $railgunID);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('railguns/' . $railgunID, [], []);
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function getZones(
string $railgunID
): \stdClass {
$user = $this->adapter->get('railguns/' . $railgunID . '/zones');
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('railguns/' . $railgunID . '/zones', [], []);
$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(
@@ -81,19 +78,19 @@ class Railgun implements API
'enabled' => $status
];
$user = $this->adapter->patch('railguns/' . $railgunID, $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->patch('railguns/' . $railgunID, [], $query);
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function delete(
string $railgunID
): bool {
$user = $this->adapter->delete('railguns/' . $railgunID);
$this->body = json_decode($user->getBody());
$user = $this->adapter->delete('railguns/' . $railgunID, [], []);
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
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\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class UARules implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -33,10 +30,10 @@ class UARules implements API
'per_page' => $perPage
];
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules', $query, []);
$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(
@@ -59,11 +56,11 @@ class UARules implements API
$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;
}
@@ -72,9 +69,9 @@ class UARules implements API
public function getRuleDetails(string $zoneID, string $blockID): \stdClass
{
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules/' . $blockID);
$this->body = json_decode($user->getBody());
return $this->body->result;
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/ua_rules/' . $blockID, [], []);
$body = json_decode($user->getBody());
return $body->result;
}
public function updateRule(
@@ -94,11 +91,11 @@ class UARules implements API
$options['description'] = $description;
}
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, $options);
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, [], $options);
$this->body = json_decode($user->getBody());
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
return true;
}
@@ -107,11 +104,11 @@ class UARules implements API
public function deleteRule(string $zoneID, string $ruleID): bool
{
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID);
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/ua_rules/' . $ruleID, [], []);
$this->body = json_decode($user->getBody());
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
return true;
}

View File

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

View File

@@ -9,12 +9,9 @@
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class WAF implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -44,10 +41,10 @@ class WAF implements API
$query['direction'] = $direction;
}
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages', $query, []);
$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 $packageID
): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID, [], []);
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function getRules(
@@ -83,10 +80,10 @@ class WAF implements API
if (!empty($direction)) {
$query['direction'] = $direction;
}
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules', $query, []);
$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(
@@ -94,10 +91,14 @@ class WAF implements API
string $packageID,
string $ruleID
): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
[],
[]
);
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function updateRule(
@@ -112,11 +113,12 @@ class WAF implements API
$user = $this->adapter->patch(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
[],
$query
);
$this->body = json_decode($user->getBody());
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function getGroups(
@@ -144,11 +146,12 @@ class WAF implements API
$user = $this->adapter->get(
'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(
@@ -156,10 +159,14 @@ class WAF implements API
string $packageID,
string $groupID
): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
[],
[]
);
$body = json_decode($user->getBody());
return $this->body->result;
return $body->result;
}
public function updateGroup(
@@ -174,10 +181,11 @@ class WAF implements API
$user = $this->adapter->patch(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
[],
$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;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class ZoneLockdown implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -32,10 +29,10 @@ class ZoneLockdown implements API
'per_page' => $perPage
];
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns', $query, []);
$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(
@@ -58,11 +55,11 @@ class ZoneLockdown implements API
$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;
}
@@ -71,9 +68,9 @@ class ZoneLockdown implements API
public function getLockdownDetails(string $zoneID, string $lockdownID): \stdClass
{
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID);
$this->body = json_decode($user->getBody());
return $this->body->result;
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], []);
$body = json_decode($user->getBody());
return $body->result;
}
public function updateLockdown(
@@ -93,11 +90,11 @@ class ZoneLockdown implements API
$options['description'] = $description;
}
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, $options);
$user = $this->adapter->put('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], $options);
$this->body = json_decode($user->getBody());
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
return true;
}
@@ -106,11 +103,11 @@ class ZoneLockdown implements API
public function deleteLockdown(string $zoneID, string $lockdownID): bool
{
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID);
$user = $this->adapter->delete('zones/' . $zoneID . '/firewall/lockdowns/' . $lockdownID, [], []);
$this->body = json_decode($user->getBody());
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
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;
use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Traits\BodyAccessorTrait;
class Zones implements API
{
use BodyAccessorTrait;
private $adapter;
public function __construct(Adapter $adapter)
@@ -27,72 +24,37 @@ class Zones implements API
*
* @param string $name
* @param bool $jumpStart
* @param string $accountId
* @param string $organizationID
* @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 = [
'name' => $name,
'jump_start' => $jumpStart
];
if (!empty($accountId)) {
$options['account'] = [
'id' => $accountId,
];
if (!empty($organizationID)) {
$options['organization'] = (object)['id' => $organizationID];
}
$user = $this->adapter->post('zones', $options);
$this->body = json_decode($user->getBody());
return $this->body->result;
$user = $this->adapter->post('zones', [], $options);
$body = json_decode($user->getBody());
return $body->result;
}
public function activationCheck(string $zoneID): bool
{
$user = $this->adapter->put('zones/' . $zoneID . '/activation_check');
$this->body = json_decode($user->getBody());
$user = $this->adapter->put('zones/' . $zoneID . '/activation_check', [], []);
$body = json_decode($user->getBody());
if (isset($this->body->result->id)) {
if (isset($body->result->id)) {
return true;
}
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(
string $name = '',
string $status = '',
@@ -124,10 +86,10 @@ class Zones implements API
$query['direction'] = $direction;
}
$user = $this->adapter->get('zones', $query);
$this->body = json_decode($user->getBody());
$user = $this->adapter->get('zones', $query, []);
$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
@@ -152,11 +114,9 @@ class Zones implements API
*/
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($this->body)->result;
return json_decode($response->getBody())->result;
}
/**
@@ -168,49 +128,17 @@ class Zones implements API
*/
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 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
@@ -219,55 +147,33 @@ class Zones implements API
*/
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 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) {
throw new EndpointException('No files, tags or hosts to purge.');
if ($files === null && $tags === null) {
throw new EndpointException('No files or tags to purge.');
}
$options = [];
if (!is_null($files)) {
$options['files'] = $files;
}
$options = [
'files' => $files,
'tags' => $tags
];
if (!is_null($tags)) {
$options['tags'] = $tags;
}
$user = $this->adapter->delete('zones/' . $zoneID . '/purge_cache', [], $options);
if (!is_null($hosts)) {
$options['hosts'] = $hosts;
}
$body = json_decode($user->getBody());
$user = $this->adapter->post('zones/' . $zoneID . '/purge_cache', $options);
$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)) {
if (isset($body->result->id)) {
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
use Cloudflare\API\Adapter\ResponseException;
/**
* User: junade
* Date: 13/01/2017
* Time: 23:35
*/
use GuzzleHttp\Psr7\Response;
class GuzzleTest extends TestCase
{
@@ -35,7 +41,7 @@ class GuzzleTest extends TestCase
public function testPost()
{
$response = $this->client->post('https://httpbin.org/post', ['X-Post-Test' => 'Testing a POST request.']);
$response = $this->client->post('https://httpbin.org/post', [], ['X-Post-Test' => 'Testing a POST request.']);
$headers = $response->getHeaders();
$this->assertEquals('application/json', $headers['Content-Type'][0]);
@@ -46,7 +52,7 @@ class GuzzleTest extends TestCase
public function testPut()
{
$response = $this->client->put('https://httpbin.org/put', ['X-Put-Test' => 'Testing a PUT request.']);
$response = $this->client->put('https://httpbin.org/put', [], ['X-Put-Test' => 'Testing a PUT request.']);
$headers = $response->getHeaders();
$this->assertEquals('application/json', $headers['Content-Type'][0]);
@@ -59,6 +65,7 @@ class GuzzleTest extends TestCase
{
$response = $this->client->patch(
'https://httpbin.org/patch',
[],
['X-Patch-Test' => 'Testing a PATCH request.']
);
@@ -73,6 +80,7 @@ class GuzzleTest extends TestCase
{
$response = $this->client->delete(
'https://httpbin.org/delete',
[],
['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'});
}
public function testNotFound()
public function testErrors()
{
$this->expectException(ResponseException::class);
$this->client->get('https://httpbin.org/status/404');
$class = new ReflectionClass(\Cloudflare\API\Adapter\Guzzle::class);
$method = $class->getMethod('checkError');
$method->setAccessible(true);
$body =
'{
"result": null,
"success": false,
"errors": [{"code":1003,"message":"Invalid or missing zone id."}],
"messages": []
}'
;
$response = new Response(200, [], $body);
$this->expectException(\Cloudflare\API\Adapter\ResponseException::class);
$method->invokeArgs($this->client, [$response]);
$body =
'{
"result": null,
"success": false,
"errors": [],
"messages": []
}'
;
$response = new Response(200, [], $body);
$this->expectException(\Cloudflare\API\Adapter\ResponseException::class);
$method->invokeArgs($this->client, [$response]);
$body = 'this isnt json.';
$response = new Response(200, [], $body);
$this->expectException(\Cloudflare\API\Adapter\JSONException::class);
$method->invokeArgs($this->client, [$response]);
}
public function testServerError()
public function testNotFound()
{
$this->expectException(ResponseException::class);
$this->client->get('https://httpbin.org/status/500');
$this->expectException(\GuzzleHttp\Exception\RequestException::class);
$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();
$this->assertCount(1, $array);
$this->assertArrayHasKey('target', $array[0]);
$this->assertEquals('ua', $array[0]['target']);
$this->assertArrayHasKey('value', $array[0]);
$this->assertObjectHasAttribute('target', $array[0]);
$this->assertEquals('ua', $array[0]->target);
$this->assertObjectHasAttribute('value', $array[0]);
$this->assertEquals(
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4',
$array[0]['value']
$array[0]->value
);
}
}

View File

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

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();
$this->assertCount(1, $array);
$this->assertEquals('junade.com/*', $array[0]['constraint']['value']);
$this->assertEquals('matches', $array[0]['constraint']['operator']);
$this->assertEquals('junade.com/*', $array[0]->constraint->value);
$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,
'per_page' => 50,
'match' => 'all'
])
]),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\AccessRules($mock);
@@ -28,7 +29,6 @@ class AccessRulesTest extends TestCase
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $zones->getBody()->result[0]->id);
}
public function testCreateRule()
@@ -45,9 +45,10 @@ class AccessRulesTest extends TestCase
->method('post')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules'),
$this->equalTo([]),
$this->equalTo([
'mode' => 'challenge',
'configuration' => $config->getArray(),
'configuration' => (object) $config->getArray(),
'notes' => 'This rule is on because of an event that occured on date X',
])
);
@@ -59,7 +60,6 @@ class AccessRulesTest extends TestCase
$config,
'This rule is on because of an event that occured on date X'
);
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
}
public function testUpdateRule()
@@ -73,6 +73,7 @@ class AccessRulesTest extends TestCase
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'),
$this->equalTo([]),
$this->equalTo([
'mode' => 'challenge',
'notes' => 'This rule is on because of an event that occured on date X',
@@ -86,7 +87,6 @@ class AccessRulesTest extends TestCase
'challenge',
'This rule is on because of an event that occured on date X'
);
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $rules->getBody()->result->id);
}
public function testDeleteRule()
@@ -100,6 +100,7 @@ class AccessRulesTest extends TestCase
->method('delete')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/access_rules/rules/92f17202ed8bd63d69a66b86a49a8f6b'),
$this->equalTo([]),
$this->equalTo([
'cascade' => 'none'
])
@@ -107,6 +108,5 @@ class AccessRulesTest extends TestCase
$rules = new \Cloudflare\API\Endpoints\AccessRules($mock);
$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')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
$this->equalTo([]),
$this->equalTo([
'type' => 'A',
'name' => 'example.com',
@@ -32,57 +33,6 @@ class DNSTest extends TestCase
$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()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRecords.json');
@@ -94,16 +44,16 @@ class DNSTest extends TestCase
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'type' => 'A',
'name' => 'example.com',
'content' => '127.0.0.1',
'order' => 'type',
'direction' => 'desc',
])
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'type' => 'A',
'name' => 'example.com',
'content' => '127.0.0.1',
'order' => 'type',
'direction' => 'desc']),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\DNS($mock);
@@ -114,7 +64,6 @@ class DNSTest extends TestCase
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
}
public function testGetDNSRecordDetails()
@@ -127,33 +76,14 @@ class DNSTest extends TestCase
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59')
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([])
);
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
$result = $dns->getRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$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()
@@ -175,6 +105,7 @@ class DNSTest extends TestCase
->method('put')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo($details)
);
@@ -182,7 +113,6 @@ class DNSTest extends TestCase
$result = $dns->updateRecordDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59', $details);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $dns->getBody()->result->id);
foreach ($details as $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())
->method('get')
->with(
$this->equalTo('ips')
$this->equalTo('ips'),
$this->equalTo([])
);
$ipsMock = new \Cloudflare\API\Endpoints\IPs($mock);
$ips = $ipsMock->listIPs();
$ips = new \Cloudflare\API\Endpoints\IPs($mock);
$ips = $ips->listIPs();
$this->assertObjectHasAttribute('ipv4_cidrs', $ips);
$this->assertObjectHasAttribute('ipv6_cidrs', $ips);
$this->assertObjectHasAttribute('ipv4_cidrs', $ipsMock->getBody()->result);
$this->assertObjectHasAttribute('ipv6_cidrs', $ipsMock->getBody()->result);
}
}

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')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([]),
$this->equalTo([
'targets' => $target->getArray(),
'actions' => $action->getArray(),
@@ -35,7 +36,6 @@ class PageRulesTest extends TestCase
$result = $pageRules->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
$this->assertTrue($result);
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
}
public function testListPageRules()
@@ -49,17 +49,17 @@ class PageRulesTest extends TestCase
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([
$this->equalTo([
'status' => 'active',
'order' => 'status',
'direction' => 'desc',
'match' => 'all'
])
]),
$this->equalTo([])
);
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$pageRules->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all');
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result[0]->id);
}
public function testGetPageRuleDetails()
@@ -72,12 +72,12 @@ class PageRulesTest extends TestCase
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac')
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo([])
);
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$pageRules->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
$this->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
}
public function testUpdatePageRule()
@@ -94,7 +94,8 @@ class PageRulesTest extends TestCase
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([]),
$this->equalTo([
'targets' => $target->getArray(),
'actions' => $action->getArray(),
@@ -104,10 +105,9 @@ class PageRulesTest extends TestCase
);
$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->assertEquals('9a7806061c88ada191ed06f989cc3dac', $pageRules->getBody()->result->id);
}
public function testDeletePageRule()
@@ -120,13 +120,14 @@ class PageRulesTest extends TestCase
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac')
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo([]),
$this->equalTo([])
);
$pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$result = $pageRules->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
$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')
->with(
$this->equalTo('railguns'),
$this->equalTo([]),
$this->equalTo(['name' => $details['name']])
);
@@ -34,7 +35,6 @@ class RailgunTest extends TestCase
foreach ($details as $property => $value) {
$this->assertEquals($result->result->{ $property }, $value);
}
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result->id);
}
public function testlist()
@@ -52,7 +52,8 @@ class RailgunTest extends TestCase
'page' => 1,
'per_page' => 20,
'direction' => 'desc'
])
]),
$this->equalTo([])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
@@ -60,7 +61,6 @@ class RailgunTest extends TestCase
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result[0]->id);
}
public function testget()
@@ -73,14 +73,14 @@ class RailgunTest extends TestCase
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448')
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $railgun->get('e928d310693a83094309acf9ead50448');
$this->assertEquals('e928d310693a83094309acf9ead50448', $result->id);
$this->assertEquals('e928d310693a83094309acf9ead50448', $railgun->getBody()->result->id);
}
public function testgetZones()
@@ -93,7 +93,9 @@ class RailgunTest extends TestCase
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448/zones')
$this->equalTo('railguns/e928d310693a83094309acf9ead50448/zones'),
$this->equalTo([]),
$this->equalTo([])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
@@ -101,7 +103,6 @@ class RailgunTest extends TestCase
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $railgun->getBody()->result[0]->id);
}
public function testupdate()
@@ -119,6 +120,7 @@ class RailgunTest extends TestCase
->method('patch')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([]),
$this->equalTo($details)
);
@@ -126,7 +128,6 @@ class RailgunTest extends TestCase
$result = $waf->update('e928d310693a83094309acf9ead50448', true);
$this->assertEquals('e928d310693a83094309acf9ead50448', $result->id);
$this->assertEquals('e928d310693a83094309acf9ead50448', $waf->getBody()->result->id);
}
public function testdelete()
@@ -139,11 +140,12 @@ class RailgunTest extends TestCase
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448')
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\Railgun($mock);
$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')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
$this->equalTo([
'page' => 1,
'per_page' => 20
])
$this->equalTo([
'page' => 1,
'per_page' => 20
]),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\UARules($mock);
@@ -33,7 +34,6 @@ class UARulesTest extends TestCase
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
}
public function testCreateRule()
@@ -50,6 +50,7 @@ class UARulesTest extends TestCase
->method('post')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
$this->equalTo([]),
$this->equalTo([
'mode' => 'js_challenge',
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -66,7 +67,6 @@ class UARulesTest extends TestCase
'372e67954025e0ba6aaa6d586b9e0b59',
'Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack'
);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
}
public function getRuleDetails()
@@ -79,14 +79,14 @@ class UARulesTest extends TestCase
$mock->expects($this->once())
->method('get')
->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);
$result = $lockdown->getRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $lockdown->getBody()->result->id);
}
public function testUpdateRule()
@@ -103,6 +103,7 @@ class UARulesTest extends TestCase
->method('put')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo([
'mode' => 'js_challenge',
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -119,7 +120,6 @@ class UARulesTest extends TestCase
$config,
'Restrict access to these endpoints to requests from a known IP address'
);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $rules->getBody()->result->id);
}
public function testDeleteRule()
@@ -132,11 +132,12 @@ class UARulesTest extends TestCase
$mock->expects($this->once())
->method('delete')
->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->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->assertObjectHasAttribute('email', $details);
$this->assertEquals('user@example.com', $details->email);
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
}
public function testGetUserID()
@@ -33,7 +32,6 @@ class UserTest extends TestCase
$user = new \Cloudflare\API\Endpoints\User($mock);
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getUserID());
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
}
public function testGetUserEmail()
@@ -47,7 +45,6 @@ class UserTest extends TestCase
$user = new \Cloudflare\API\Endpoints\User($mock);
$this->assertEquals('user@example.com', $user->getUserEmail());
$this->assertEquals('user@example.com', $user->getBody()->result->email);
}
public function testUpdateUserDetails()
@@ -59,10 +56,9 @@ class UserTest extends TestCase
$mock->expects($this->once())
->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->updateUserDetails(['email' => 'user2@example.com']);
$this->assertEquals('7c5dae5552338874e5053f2534d2767a', $user->getBody()->result->id);
}
}

View File

@@ -25,7 +25,8 @@ class WAFTest extends TestCase
'match' => 'all',
'order' => 'status',
'direction' => 'desc'
])
]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
@@ -36,7 +37,6 @@ class WAFTest extends TestCase
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $waf->getBody()->result[0]->id);
}
public function testgetPackageInfo()
@@ -49,14 +49,14 @@ class WAFTest extends TestCase
$mock->expects($this->once())
->method('get')
->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);
$result = $waf->getPackageInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b');
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $result->id);
$this->assertEquals('a25a9a7e9c00afc1fb2e0245519d725b', $waf->getBody()->result->id);
}
public function testgetRules()
@@ -76,7 +76,8 @@ class WAFTest extends TestCase
'match' => 'all',
'order' => 'status',
'direction' => 'desc'
])
]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
@@ -87,7 +88,6 @@ class WAFTest extends TestCase
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('92f17202ed8bd63d69a66b86a49a8f6b', $waf->getBody()->result[0]->id);
}
public function testgetRuleInfo()
@@ -100,14 +100,14 @@ class WAFTest extends TestCase
$mock->expects($this->once())
->method('get')
->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);
$result = $waf->getRuleInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'f939de3be84e66e757adcdcb87908023');
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $result->id);
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $waf->getBody()->result->id);
}
public function testupdateRule()
@@ -125,6 +125,7 @@ class WAFTest extends TestCase
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'),
$this->equalTo([]),
$this->equalTo($details)
);
@@ -136,7 +137,6 @@ class WAFTest extends TestCase
foreach ($details as $property => $value) {
$this->assertEquals($result->{ $property }, $value);
}
$this->assertEquals('f939de3be84e66e757adcdcb87908023', $waf->getBody()->result->id);
}
public function getGroups()
@@ -156,7 +156,8 @@ class WAFTest extends TestCase
'match' => 'all',
'order' => 'status',
'direction' => 'desc'
])
]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
@@ -167,7 +168,6 @@ class WAFTest extends TestCase
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result[0]->id);
}
public function testgetGroupInfo()
@@ -180,14 +180,14 @@ class WAFTest extends TestCase
$mock->expects($this->once())
->method('get')
->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);
$result = $waf->getGroupInfo('023e105f4ecef8ad9ca31a8372d0c353', 'a25a9a7e9c00afc1fb2e0245519d725b', 'de677e5818985db1285d0e80225f06e5');
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $result->id);
$this->assertEquals('de677e5818985db1285d0e80225f06e5', $waf->getBody()->result->id);
}
public function testupdateGroup()
@@ -205,6 +205,7 @@ class WAFTest extends TestCase
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'),
$this->equalTo([]),
$this->equalTo($details)
);
@@ -216,6 +217,5 @@ class WAFTest extends TestCase
foreach ($details as $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')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
])
$this->equalTo([
'page' => 1,
'per_page' => 20,
]),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
@@ -33,7 +34,6 @@ class ZoneLockdownTest extends TestCase
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zones->getBody()->result[0]->id);
}
public function testAddLockdown()
@@ -50,6 +50,7 @@ class ZoneLockdownTest extends TestCase
->method('post')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
$this->equalTo([]),
$this->equalTo([
'urls' => ['api.mysite.com/some/endpoint*'],
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -66,7 +67,6 @@ class ZoneLockdownTest extends TestCase
'372e67954025e0ba6aaa6d586b9e0b59',
'Restrict access to these endpoints to requests from a known IP address'
);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
}
public function testGetRecordDetails()
@@ -79,14 +79,14 @@ class ZoneLockdownTest extends TestCase
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59')
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([])
);
$lockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
$result = $lockdown->getLockdownDetails('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $result->id);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $lockdown->getBody()->result->id);
}
public function testUpdateLockdown()
@@ -103,6 +103,7 @@ class ZoneLockdownTest extends TestCase
->method('put')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo([
'urls' => ['api.mysite.com/some/endpoint*'],
'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -119,7 +120,6 @@ class ZoneLockdownTest extends TestCase
$config,
'Restrict access to these endpoints to requests from a known IP address'
);
$this->assertEquals('372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->getBody()->result->id);
}
public function testDeleteLockdown()
@@ -135,11 +135,12 @@ class ZoneLockdownTest extends TestCase
$mock->expects($this->once())
->method('delete')
->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->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')
->with(
$this->equalTo('zones'),
$this->equalTo([]),
$this->equalTo(['name' => 'example.com', 'jump_start' => false])
);
@@ -37,45 +38,16 @@ class ZonesTest extends TestCase
->method('post')
->with(
$this->equalTo('zones'),
$this->equalTo([]),
$this->equalTo([
'name' => 'example.com',
'jump_start' => true,
'account' => [
'id' => '01a7362d577a6c3019a474fd6f485823',
],
'organization' => (object)['id' => '01a7362d577a6c3019a474fd6f485823']
])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$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()
@@ -88,14 +60,15 @@ class ZonesTest extends TestCase
$mock->expects($this->once())
->method('put')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check')
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check'),
$this->equalTo([]),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->activationCheck('c2547eb745079dac9320b638f5e225cf483cc5cfdda41');
$this->assertTrue($result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
}
public function testListZones()
@@ -109,15 +82,16 @@ class ZonesTest extends TestCase
->method('get')
->with(
$this->equalTo('zones'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'name' => 'example.com',
'status' => 'active',
'order' => 'status',
'direction' => 'desc',
])
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'name' => 'example.com',
'status' => 'active',
'order' => 'status',
'direction' => 'desc'
]),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
@@ -128,26 +102,6 @@ class ZonesTest extends TestCase
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
}
public function testGetZoneByID()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getZoneById.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353'));
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->getZoneById('023e105f4ecef8ad9ca31a8372d0c353');
$this->assertInstanceOf(\stdClass::class, $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result->id);
$this->assertEquals('example.com', $zones->getBody()->result->name);
}
public function testGetZoneID()
@@ -161,19 +115,19 @@ class ZonesTest extends TestCase
->method('get')
->with(
$this->equalTo('zones'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'name' => 'example.com',
])
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'name' => 'example.com',
]),
$this->equalTo([])
);
$zones = new \Cloudflare\API\Endpoints\Zones($mock);
$result = $zones->getZoneID('example.com');
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $result);
$this->assertEquals('023e105f4ecef8ad9ca31a8372d0c353', $zones->getBody()->result[0]->id);
}
public function testGetAnalyticsDashboard()
@@ -187,7 +141,8 @@ class ZonesTest extends TestCase
->method('get')
->with(
$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);
@@ -208,6 +163,7 @@ class ZonesTest extends TestCase
->method('patch')
->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/settings/development_mode'),
$this->equalTo([]),
$this->equalTo(['value' => 'on'])
);
@@ -215,6 +171,26 @@ class ZonesTest extends TestCase
$result = $zones->changeDevelopmentMode('c2547eb745079dac9320b638f5e225cf483cc5cfdda41', true);
$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",
"owner_type": "user"
},
"account": {
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "Demo Account"
},
"permissions": [
"#zone:read",
"#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