Files
cloudflare-php/src/Configurations/PageRulesActions.php
2017-11-21 17:43:47 +01:00

312 lines
8.5 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 19/09/2017
* Time: 16:50
*/
namespace Cloudflare\API\Configurations;
class PageRulesActions implements Configurations
{
private $configs = [];
public function setAlwaysOnline(bool $active)
{
$this->addConfigurationOption('always_online', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setAlwaysUseHTTPS(bool $active)
{
$this->addConfigurationOption('always_use_https', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setBrowserCacheTTL(int $ttl)
{
$this->addConfigurationOption('browser_cache_ttl', [
'value' => $ttl
]);
}
public function setBrowserIntegrityCheck(bool $active)
{
$this->addConfigurationOption('browser_check', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setBypassCacheOnCookie(string $value)
{
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
throw new ConfigurationsException('Invalid cookie string.');
}
$this->addConfigurationOption('bypass_cache_on_cookie', [
'value' => $value
]);
}
public function setCacheByDeviceType(bool $active)
{
$this->addConfigurationOption('cache_by_device_type', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setCacheKey(string $value)
{
$this->addConfigurationOption('cache_key', [
'value' => $value
]);
}
public function setCacheLevel(string $value)
{
if (!in_array($value, ['bypass', 'basic', 'simplified', 'aggressive', 'cache_everything'])) {
throw new ConfigurationsException('Invalid cache level');
}
$this->addConfigurationOption('cache_level', [
'value' => $value
]);
}
public function setCacheOnCookie(string $value)
{
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
throw new ConfigurationsException('Invalid cookie string.');
}
$this->addConfigurationOption('cache_on_cookie', [
'value' => $value
]);
}
public function setDisableApps(bool $active)
{
$this->addConfigurationOption('disable_apps', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setDisablePerformance(bool $active)
{
$this->addConfigurationOption('disable_performance', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setDisableSecurity(bool $active)
{
$this->addConfigurationOption('disable_security', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setEdgeCacheTTL(int $value)
{
if ($value > 2419200) {
throw new ConfigurationsException('Edge Cache TTL too high.');
}
$this->addConfigurationOption('edge_cache_ttl', [
'value' => $value
]);
}
public function setEmailObfuscation(bool $active)
{
$this->addConfigurationOption('disable_security', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setForwardingURL(int $statusCode, string $forwardingUrl)
{
if (!in_array($statusCode, ['301', '302'])) {
throw new ConfigurationsException('Status Codes can only be 301 or 302.');
}
$this->addConfigurationOption('forwarding_url', [
'status_code' => $statusCode,
'url' => $forwardingUrl,
]);
}
public function setHostHeaderOverride(bool $active)
{
$this->addConfigurationOption('host_header_override', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setHotlinkProtection(bool $active)
{
$this->addConfigurationOption('hotlink_protection', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setIPGeoLocationHeader(bool $active)
{
$this->addConfigurationOption('ip_geolocation', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setMinification(bool $html, bool $css, bool $javascript)
{
$this->addConfigurationOption('minification', [
'html' => $this->getBoolAsOnOrOff($html),
'css' => $this->getBoolAsOnOrOff($css),
'js' => $this->getBoolAsOnOrOff($javascript),
]);
}
public function setMirage(bool $active)
{
$this->addConfigurationOption('mirage', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setOriginErrorPagePassthru(bool $active)
{
$this->addConfigurationOption('origin_error_page_pass_thru', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setQueryStringSort(bool $active)
{
$this->addConfigurationOption('sort_query_string_for_cache', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setDisableRailgun(bool $active)
{
$this->addConfigurationOption('disable_railgun', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setResolveOverride(bool $value)
{
$this->addConfigurationOption('resolve_override', [
'value' => $value
]);
}
public function setRespectStrongEtag(bool $active)
{
$this->addConfigurationOption('respect_strong_etag', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setResponseBuffering(bool $active)
{
$this->addConfigurationOption('response_buffering', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setRocketLoader(string $value)
{
if (!in_array($value, ['off', 'manual', 'automatic'])) {
throw new ConfigurationsException('Rocket Loader can only be off, automatic, or manual.');
}
$this->addConfigurationOption('rocket_loader', [
'value' => $value
]);
}
public function setSecurityLevel(string $value)
{
if (!in_array($value, ['off', 'essentially_off', 'low', 'medium', 'high', 'under_attack'])) {
throw new ConfigurationsException('Can only be set to off, essentially_off, low, medium, high or under_attack.');
}
$this->addConfigurationOption('security_level', [
'value' => $value
]);
}
public function setServerSideExcludes(bool $active)
{
$this->addConfigurationOption('server_side_exclude', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setSmartErrors(bool $active)
{
$this->addConfigurationOption('smart_errors', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setSSL(string $value)
{
if (!in_array($value, ['off', 'flexible', 'full', 'strict', 'origin_pull'])) {
throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.');
}
$this->addConfigurationOption('smart_errors', [
'value' => $value
]);
}
public function setTrueClientIpHeader(bool $active)
{
$this->addConfigurationOption('true_client_ip_header', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setWAF(bool $active)
{
$this->addConfigurationOption('waf', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setAutomatedHTTPSRewrites(bool $active)
{
$this->addConfigurationOption('automatic_https_rewrites', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function setOpportunisticEncryption(bool $active)
{
$this->addConfigurationOption('opportunistic_encryption', [
'value' => $this->getBoolAsOnOrOff($active)
]);
}
public function getArray(): array
{
return $this->configs;
}
private function addConfigurationOption(string $setting, array $configuration)
{
$configuration['id'] = $setting;
$this->configs[] = (object) $configuration;
}
private function getBoolAsOnOrOff(bool $value): string
{
return true === $value ? 'on' : 'off';
}
}